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

package io.kubernetes.client.proto;

public final class V2alpha1Batch {
  private V2alpha1Batch() {}
  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 CronJobOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.batch.v2alpha1.CronJob)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * More info: https://git.k8s.io/community/contributors/devel/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 a cron job, including the schedule.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
     */
    boolean hasSpec();
    /**
     * <pre>
     * Specification of the desired behavior of a cron job, including the schedule.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec getSpec();
    /**
     * <pre>
     * Specification of the desired behavior of a cron job, including the schedule.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V2alpha1Batch.CronJobSpecOrBuilder getSpecOrBuilder();

    /**
     * <pre>
     * Current status of a cron job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
     */
    boolean hasStatus();
    /**
     * <pre>
     * Current status of a cron job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus getStatus();
    /**
     * <pre>
     * Current status of a cron job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V2alpha1Batch.CronJobStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * CronJob represents the configuration of a single cron job.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.batch.v2alpha1.CronJob}
   */
  public  static final class CronJob extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.batch.v2alpha1.CronJob)
      CronJobOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CronJob.newBuilder() to construct.
    private CronJob(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CronJob() {
    }

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

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJob_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V2alpha1Batch.CronJob.class, io.kubernetes.client.proto.V2alpha1Batch.CronJob.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/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata.
     * More info: https://git.k8s.io/community/contributors/devel/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 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/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() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }

    public static final int SPEC_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec spec_;
    /**
     * <pre>
     * Specification of the desired behavior of a cron job, including the schedule.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
     */
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * Specification of the desired behavior of a cron job, including the schedule.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
     */
    public io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * Specification of the desired behavior of a cron job, including the schedule.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
     */
    public io.kubernetes.client.proto.V2alpha1Batch.CronJobSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.getDefaultInstance() : spec_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus status_;
    /**
     * <pre>
     * Current status of a cron job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
     */
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * Current status of a cron job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
     */
    public io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * Current status of a cron job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
     */
    public io.kubernetes.client.proto.V2alpha1Batch.CronJobStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.getDefaultInstance() : status_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

      boolean result = true;
      result = result && (hasMetadata() == other.hasMetadata());
      if (hasMetadata()) {
        result = result && getMetadata()
            .equals(other.getMetadata());
      }
      result = result && (hasSpec() == other.hasSpec());
      if (hasSpec()) {
        result = result && getSpec()
            .equals(other.getSpec());
      }
      result = result && (hasStatus() == other.hasStatus());
      if (hasStatus()) {
        result = result && getStatus()
            .equals(other.getStatus());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V2alpha1Batch.CronJob prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CronJob represents the configuration of a single cron job.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.batch.v2alpha1.CronJob}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.batch.v2alpha1.CronJob)
        io.kubernetes.client.proto.V2alpha1Batch.CronJobOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJob_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJob_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V2alpha1Batch.CronJob.class, io.kubernetes.client.proto.V2alpha1Batch.CronJob.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getSpecFieldBuilder();
          getStatusFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (specBuilder_ == null) {
          spec_ = null;
        } else {
          specBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (statusBuilder_ == null) {
          status_ = null;
        } else {
          statusBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public io.kubernetes.client.proto.V2alpha1Batch.CronJob getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V2alpha1Batch.CronJob.getDefaultInstance();
      }

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

      public io.kubernetes.client.proto.V2alpha1Batch.CronJob buildPartial() {
        io.kubernetes.client.proto.V2alpha1Batch.CronJob result = new io.kubernetes.client.proto.V2alpha1Batch.CronJob(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (specBuilder_ == null) {
          result.spec_ = spec_;
        } else {
          result.spec_ = specBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (statusBuilder_ == null) {
          result.status_ = status_;
        } else {
          result.status_ = statusBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

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

      public final boolean isInitialized() {
        return true;
      }

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

      private io.kubernetes.client.proto.Meta.ObjectMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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 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/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;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ObjectMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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/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/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec spec_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec, io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.Builder, io.kubernetes.client.proto.V2alpha1Batch.CronJobSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * Specification of the desired behavior of a cron job, including the schedule.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * Specification of the desired behavior of a cron job, including the schedule.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Specification of the desired behavior of a cron job, including the schedule.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
          onChanged();
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of a cron job, including the schedule.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
          onChanged();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of a cron job, including the schedule.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              spec_ != null &&
              spec_ != io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.getDefaultInstance()) {
            spec_ =
              io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.newBuilder(spec_).mergeFrom(value).buildPartial();
          } else {
            spec_ = value;
          }
          onChanged();
        } else {
          specBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of a cron job, including the schedule.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        if (specBuilder_ == null) {
          spec_ = null;
          onChanged();
        } else {
          specBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of a cron job, including the schedule.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Specification of the desired behavior of a cron job, including the schedule.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJobSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * Specification of the desired behavior of a cron job, including the schedule.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec, io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.Builder, io.kubernetes.client.proto.V2alpha1Batch.CronJobSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec, io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.Builder, io.kubernetes.client.proto.V2alpha1Batch.CronJobSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      private io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus status_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus, io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.Builder, io.kubernetes.client.proto.V2alpha1Batch.CronJobStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * Current status of a cron job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * Current status of a cron job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Current status of a cron job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
          onChanged();
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Current status of a cron job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
          onChanged();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Current status of a cron job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              status_ != null &&
              status_ != io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.getDefaultInstance()) {
            status_ =
              io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.newBuilder(status_).mergeFrom(value).buildPartial();
          } else {
            status_ = value;
          }
          onChanged();
        } else {
          statusBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Current status of a cron job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
       */
      public Builder clearStatus() {
        if (statusBuilder_ == null) {
          status_ = null;
          onChanged();
        } else {
          statusBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       * Current status of a cron job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Current status of a cron job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJobStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * Current status of a cron job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.CronJobStatus status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus, io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.Builder, io.kubernetes.client.proto.V2alpha1Batch.CronJobStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus, io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.Builder, io.kubernetes.client.proto.V2alpha1Batch.CronJobStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.batch.v2alpha1.CronJob)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.batch.v2alpha1.CronJob)
    private static final io.kubernetes.client.proto.V2alpha1Batch.CronJob DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V2alpha1Batch.CronJob();
    }

    public static io.kubernetes.client.proto.V2alpha1Batch.CronJob getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.kubernetes.client.proto.V2alpha1Batch.CronJob getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CronJobListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.batch.v2alpha1.CronJobList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMeta getMetadata();
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/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 CronJobs.
     * </pre>
     *
     * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V2alpha1Batch.CronJob> 
        getItemsList();
    /**
     * <pre>
     * items is the list of CronJobs.
     * </pre>
     *
     * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
     */
    io.kubernetes.client.proto.V2alpha1Batch.CronJob getItems(int index);
    /**
     * <pre>
     * items is the list of CronJobs.
     * </pre>
     *
     * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * items is the list of CronJobs.
     * </pre>
     *
     * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V2alpha1Batch.CronJobOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * items is the list of CronJobs.
     * </pre>
     *
     * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
     */
    io.kubernetes.client.proto.V2alpha1Batch.CronJobOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * CronJobList is a collection of cron jobs.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.batch.v2alpha1.CronJobList}
   */
  public  static final class CronJobList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.batch.v2alpha1.CronJobList)
      CronJobListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CronJobList.newBuilder() to construct.
    private CronJobList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CronJobList() {
      items_ = java.util.Collections.emptyList();
    }

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

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJobList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V2alpha1Batch.CronJobList.class, io.kubernetes.client.proto.V2alpha1Batch.CronJobList.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/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard list metadata.
     * More info: https://git.k8s.io/community/contributors/devel/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 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/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() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
    }

    public static final int ITEMS_FIELD_NUMBER = 2;
    private java.util.List<io.kubernetes.client.proto.V2alpha1Batch.CronJob> items_;
    /**
     * <pre>
     * items is the list of CronJobs.
     * </pre>
     *
     * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
     */
    public java.util.List<io.kubernetes.client.proto.V2alpha1Batch.CronJob> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * items is the list of CronJobs.
     * </pre>
     *
     * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
     */
    public java.util.List<? extends io.kubernetes.client.proto.V2alpha1Batch.CronJobOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * items is the list of CronJobs.
     * </pre>
     *
     * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
     */
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * items is the list of CronJobs.
     * </pre>
     *
     * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
     */
    public io.kubernetes.client.proto.V2alpha1Batch.CronJob getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * items is the list of CronJobs.
     * </pre>
     *
     * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
     */
    public io.kubernetes.client.proto.V2alpha1Batch.CronJobOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V2alpha1Batch.CronJobList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CronJobList is a collection of cron jobs.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.batch.v2alpha1.CronJobList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.batch.v2alpha1.CronJobList)
        io.kubernetes.client.proto.V2alpha1Batch.CronJobListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJobList_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJobList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V2alpha1Batch.CronJobList.class, io.kubernetes.client.proto.V2alpha1Batch.CronJobList.Builder.class);
      }

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

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

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

      public io.kubernetes.client.proto.V2alpha1Batch.CronJobList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V2alpha1Batch.CronJobList.getDefaultInstance();
      }

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

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

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

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

      public final boolean isInitialized() {
        return true;
      }

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

      private io.kubernetes.client.proto.Meta.ListMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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 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/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;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ListMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMeta.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Standard list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
        }
      }
      /**
       * <pre>
       * Standard list metadata.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

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

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V2alpha1Batch.CronJob, io.kubernetes.client.proto.V2alpha1Batch.CronJob.Builder, io.kubernetes.client.proto.V2alpha1Batch.CronJobOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * items is the list of CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V2alpha1Batch.CronJob> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * items is the list of CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * items is the list of CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJob getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * items is the list of CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V2alpha1Batch.CronJob 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 CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V2alpha1Batch.CronJob.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 CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V2alpha1Batch.CronJob 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 CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V2alpha1Batch.CronJob 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 CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V2alpha1Batch.CronJob.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items is the list of CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V2alpha1Batch.CronJob.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 CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V2alpha1Batch.CronJob> 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 CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob 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 CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob 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 CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJob.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * items is the list of CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJobOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * items is the list of CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V2alpha1Batch.CronJobOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * items is the list of CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJob.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V2alpha1Batch.CronJob.getDefaultInstance());
      }
      /**
       * <pre>
       * items is the list of CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.CronJob.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V2alpha1Batch.CronJob.getDefaultInstance());
      }
      /**
       * <pre>
       * items is the list of CronJobs.
       * </pre>
       *
       * <code>repeated .k8s.io.api.batch.v2alpha1.CronJob items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V2alpha1Batch.CronJob.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V2alpha1Batch.CronJob, io.kubernetes.client.proto.V2alpha1Batch.CronJob.Builder, io.kubernetes.client.proto.V2alpha1Batch.CronJobOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.kubernetes.client.proto.V2alpha1Batch.CronJob, io.kubernetes.client.proto.V2alpha1Batch.CronJob.Builder, io.kubernetes.client.proto.V2alpha1Batch.CronJobOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.batch.v2alpha1.CronJobList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.batch.v2alpha1.CronJobList)
    private static final io.kubernetes.client.proto.V2alpha1Batch.CronJobList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V2alpha1Batch.CronJobList();
    }

    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.kubernetes.client.proto.V2alpha1Batch.CronJobList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CronJobSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.batch.v2alpha1.CronJobSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
     * </pre>
     *
     * <code>optional string schedule = 1;</code>
     */
    boolean hasSchedule();
    /**
     * <pre>
     * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
     * </pre>
     *
     * <code>optional string schedule = 1;</code>
     */
    java.lang.String getSchedule();
    /**
     * <pre>
     * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
     * </pre>
     *
     * <code>optional string schedule = 1;</code>
     */
    com.google.protobuf.ByteString
        getScheduleBytes();

    /**
     * <pre>
     * Optional deadline in seconds for starting the job if it misses scheduled
     * time for any reason.  Missed jobs executions will be counted as failed ones.
     * +optional
     * </pre>
     *
     * <code>optional int64 startingDeadlineSeconds = 2;</code>
     */
    boolean hasStartingDeadlineSeconds();
    /**
     * <pre>
     * Optional deadline in seconds for starting the job if it misses scheduled
     * time for any reason.  Missed jobs executions will be counted as failed ones.
     * +optional
     * </pre>
     *
     * <code>optional int64 startingDeadlineSeconds = 2;</code>
     */
    long getStartingDeadlineSeconds();

    /**
     * <pre>
     * Specifies how to treat concurrent executions of a Job.
     * Defaults to Allow.
     * +optional
     * </pre>
     *
     * <code>optional string concurrencyPolicy = 3;</code>
     */
    boolean hasConcurrencyPolicy();
    /**
     * <pre>
     * Specifies how to treat concurrent executions of a Job.
     * Defaults to Allow.
     * +optional
     * </pre>
     *
     * <code>optional string concurrencyPolicy = 3;</code>
     */
    java.lang.String getConcurrencyPolicy();
    /**
     * <pre>
     * Specifies how to treat concurrent executions of a Job.
     * Defaults to Allow.
     * +optional
     * </pre>
     *
     * <code>optional string concurrencyPolicy = 3;</code>
     */
    com.google.protobuf.ByteString
        getConcurrencyPolicyBytes();

    /**
     * <pre>
     * This flag tells the controller to suspend subsequent executions, it does
     * not apply to already started executions.  Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool suspend = 4;</code>
     */
    boolean hasSuspend();
    /**
     * <pre>
     * This flag tells the controller to suspend subsequent executions, it does
     * not apply to already started executions.  Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool suspend = 4;</code>
     */
    boolean getSuspend();

    /**
     * <pre>
     * Specifies the job that will be created when executing a CronJob.
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
     */
    boolean hasJobTemplate();
    /**
     * <pre>
     * Specifies the job that will be created when executing a CronJob.
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
     */
    io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec getJobTemplate();
    /**
     * <pre>
     * Specifies the job that will be created when executing a CronJob.
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
     */
    io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder getJobTemplateOrBuilder();

    /**
     * <pre>
     * The number of successful finished jobs to retain.
     * This is a pointer to distinguish between explicit zero and not specified.
     * +optional
     * </pre>
     *
     * <code>optional int32 successfulJobsHistoryLimit = 6;</code>
     */
    boolean hasSuccessfulJobsHistoryLimit();
    /**
     * <pre>
     * The number of successful finished jobs to retain.
     * This is a pointer to distinguish between explicit zero and not specified.
     * +optional
     * </pre>
     *
     * <code>optional int32 successfulJobsHistoryLimit = 6;</code>
     */
    int getSuccessfulJobsHistoryLimit();

    /**
     * <pre>
     * The number of failed finished jobs to retain.
     * This is a pointer to distinguish between explicit zero and not specified.
     * +optional
     * </pre>
     *
     * <code>optional int32 failedJobsHistoryLimit = 7;</code>
     */
    boolean hasFailedJobsHistoryLimit();
    /**
     * <pre>
     * The number of failed finished jobs to retain.
     * This is a pointer to distinguish between explicit zero and not specified.
     * +optional
     * </pre>
     *
     * <code>optional int32 failedJobsHistoryLimit = 7;</code>
     */
    int getFailedJobsHistoryLimit();
  }
  /**
   * <pre>
   * CronJobSpec describes how the job execution will look like and when it will actually run.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.batch.v2alpha1.CronJobSpec}
   */
  public  static final class CronJobSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.batch.v2alpha1.CronJobSpec)
      CronJobSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CronJobSpec.newBuilder() to construct.
    private CronJobSpec(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CronJobSpec() {
      schedule_ = "";
      startingDeadlineSeconds_ = 0L;
      concurrencyPolicy_ = "";
      suspend_ = false;
      successfulJobsHistoryLimit_ = 0;
      failedJobsHistoryLimit_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CronJobSpec(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              schedule_ = bs;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              startingDeadlineSeconds_ = input.readInt64();
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              concurrencyPolicy_ = bs;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              suspend_ = input.readBool();
              break;
            }
            case 42: {
              io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = jobTemplate_.toBuilder();
              }
              jobTemplate_ = input.readMessage(io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(jobTemplate_);
                jobTemplate_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              successfulJobsHistoryLimit_ = input.readInt32();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              failedJobsHistoryLimit_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJobSpec_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJobSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.class, io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.Builder.class);
    }

    private int bitField0_;
    public static final int SCHEDULE_FIELD_NUMBER = 1;
    private volatile java.lang.Object schedule_;
    /**
     * <pre>
     * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
     * </pre>
     *
     * <code>optional string schedule = 1;</code>
     */
    public boolean hasSchedule() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
     * </pre>
     *
     * <code>optional string schedule = 1;</code>
     */
    public java.lang.String getSchedule() {
      java.lang.Object ref = schedule_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          schedule_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
     * </pre>
     *
     * <code>optional string schedule = 1;</code>
     */
    public com.google.protobuf.ByteString
        getScheduleBytes() {
      java.lang.Object ref = schedule_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        schedule_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STARTINGDEADLINESECONDS_FIELD_NUMBER = 2;
    private long startingDeadlineSeconds_;
    /**
     * <pre>
     * Optional deadline in seconds for starting the job if it misses scheduled
     * time for any reason.  Missed jobs executions will be counted as failed ones.
     * +optional
     * </pre>
     *
     * <code>optional int64 startingDeadlineSeconds = 2;</code>
     */
    public boolean hasStartingDeadlineSeconds() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * Optional deadline in seconds for starting the job if it misses scheduled
     * time for any reason.  Missed jobs executions will be counted as failed ones.
     * +optional
     * </pre>
     *
     * <code>optional int64 startingDeadlineSeconds = 2;</code>
     */
    public long getStartingDeadlineSeconds() {
      return startingDeadlineSeconds_;
    }

    public static final int CONCURRENCYPOLICY_FIELD_NUMBER = 3;
    private volatile java.lang.Object concurrencyPolicy_;
    /**
     * <pre>
     * Specifies how to treat concurrent executions of a Job.
     * Defaults to Allow.
     * +optional
     * </pre>
     *
     * <code>optional string concurrencyPolicy = 3;</code>
     */
    public boolean hasConcurrencyPolicy() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * Specifies how to treat concurrent executions of a Job.
     * Defaults to Allow.
     * +optional
     * </pre>
     *
     * <code>optional string concurrencyPolicy = 3;</code>
     */
    public java.lang.String getConcurrencyPolicy() {
      java.lang.Object ref = concurrencyPolicy_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          concurrencyPolicy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Specifies how to treat concurrent executions of a Job.
     * Defaults to Allow.
     * +optional
     * </pre>
     *
     * <code>optional string concurrencyPolicy = 3;</code>
     */
    public com.google.protobuf.ByteString
        getConcurrencyPolicyBytes() {
      java.lang.Object ref = concurrencyPolicy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        concurrencyPolicy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SUSPEND_FIELD_NUMBER = 4;
    private boolean suspend_;
    /**
     * <pre>
     * This flag tells the controller to suspend subsequent executions, it does
     * not apply to already started executions.  Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool suspend = 4;</code>
     */
    public boolean hasSuspend() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <pre>
     * This flag tells the controller to suspend subsequent executions, it does
     * not apply to already started executions.  Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool suspend = 4;</code>
     */
    public boolean getSuspend() {
      return suspend_;
    }

    public static final int JOBTEMPLATE_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec jobTemplate_;
    /**
     * <pre>
     * Specifies the job that will be created when executing a CronJob.
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
     */
    public boolean hasJobTemplate() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <pre>
     * Specifies the job that will be created when executing a CronJob.
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
     */
    public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec getJobTemplate() {
      return jobTemplate_ == null ? io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance() : jobTemplate_;
    }
    /**
     * <pre>
     * Specifies the job that will be created when executing a CronJob.
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
     */
    public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder getJobTemplateOrBuilder() {
      return jobTemplate_ == null ? io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance() : jobTemplate_;
    }

    public static final int SUCCESSFULJOBSHISTORYLIMIT_FIELD_NUMBER = 6;
    private int successfulJobsHistoryLimit_;
    /**
     * <pre>
     * The number of successful finished jobs to retain.
     * This is a pointer to distinguish between explicit zero and not specified.
     * +optional
     * </pre>
     *
     * <code>optional int32 successfulJobsHistoryLimit = 6;</code>
     */
    public boolean hasSuccessfulJobsHistoryLimit() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <pre>
     * The number of successful finished jobs to retain.
     * This is a pointer to distinguish between explicit zero and not specified.
     * +optional
     * </pre>
     *
     * <code>optional int32 successfulJobsHistoryLimit = 6;</code>
     */
    public int getSuccessfulJobsHistoryLimit() {
      return successfulJobsHistoryLimit_;
    }

    public static final int FAILEDJOBSHISTORYLIMIT_FIELD_NUMBER = 7;
    private int failedJobsHistoryLimit_;
    /**
     * <pre>
     * The number of failed finished jobs to retain.
     * This is a pointer to distinguish between explicit zero and not specified.
     * +optional
     * </pre>
     *
     * <code>optional int32 failedJobsHistoryLimit = 7;</code>
     */
    public boolean hasFailedJobsHistoryLimit() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <pre>
     * The number of failed finished jobs to retain.
     * This is a pointer to distinguish between explicit zero and not specified.
     * +optional
     * </pre>
     *
     * <code>optional int32 failedJobsHistoryLimit = 7;</code>
     */
    public int getFailedJobsHistoryLimit() {
      return failedJobsHistoryLimit_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, schedule_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, startingDeadlineSeconds_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, concurrencyPolicy_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, suspend_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, getJobTemplate());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(6, successfulJobsHistoryLimit_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeInt32(7, failedJobsHistoryLimit_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, schedule_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, startingDeadlineSeconds_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, concurrencyPolicy_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, suspend_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getJobTemplate());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, successfulJobsHistoryLimit_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, failedJobsHistoryLimit_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      boolean result = true;
      result = result && (hasSchedule() == other.hasSchedule());
      if (hasSchedule()) {
        result = result && getSchedule()
            .equals(other.getSchedule());
      }
      result = result && (hasStartingDeadlineSeconds() == other.hasStartingDeadlineSeconds());
      if (hasStartingDeadlineSeconds()) {
        result = result && (getStartingDeadlineSeconds()
            == other.getStartingDeadlineSeconds());
      }
      result = result && (hasConcurrencyPolicy() == other.hasConcurrencyPolicy());
      if (hasConcurrencyPolicy()) {
        result = result && getConcurrencyPolicy()
            .equals(other.getConcurrencyPolicy());
      }
      result = result && (hasSuspend() == other.hasSuspend());
      if (hasSuspend()) {
        result = result && (getSuspend()
            == other.getSuspend());
      }
      result = result && (hasJobTemplate() == other.hasJobTemplate());
      if (hasJobTemplate()) {
        result = result && getJobTemplate()
            .equals(other.getJobTemplate());
      }
      result = result && (hasSuccessfulJobsHistoryLimit() == other.hasSuccessfulJobsHistoryLimit());
      if (hasSuccessfulJobsHistoryLimit()) {
        result = result && (getSuccessfulJobsHistoryLimit()
            == other.getSuccessfulJobsHistoryLimit());
      }
      result = result && (hasFailedJobsHistoryLimit() == other.hasFailedJobsHistoryLimit());
      if (hasFailedJobsHistoryLimit()) {
        result = result && (getFailedJobsHistoryLimit()
            == other.getFailedJobsHistoryLimit());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSchedule()) {
        hash = (37 * hash) + SCHEDULE_FIELD_NUMBER;
        hash = (53 * hash) + getSchedule().hashCode();
      }
      if (hasStartingDeadlineSeconds()) {
        hash = (37 * hash) + STARTINGDEADLINESECONDS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getStartingDeadlineSeconds());
      }
      if (hasConcurrencyPolicy()) {
        hash = (37 * hash) + CONCURRENCYPOLICY_FIELD_NUMBER;
        hash = (53 * hash) + getConcurrencyPolicy().hashCode();
      }
      if (hasSuspend()) {
        hash = (37 * hash) + SUSPEND_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getSuspend());
      }
      if (hasJobTemplate()) {
        hash = (37 * hash) + JOBTEMPLATE_FIELD_NUMBER;
        hash = (53 * hash) + getJobTemplate().hashCode();
      }
      if (hasSuccessfulJobsHistoryLimit()) {
        hash = (37 * hash) + SUCCESSFULJOBSHISTORYLIMIT_FIELD_NUMBER;
        hash = (53 * hash) + getSuccessfulJobsHistoryLimit();
      }
      if (hasFailedJobsHistoryLimit()) {
        hash = (37 * hash) + FAILEDJOBSHISTORYLIMIT_FIELD_NUMBER;
        hash = (53 * hash) + getFailedJobsHistoryLimit();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CronJobSpec describes how the job execution will look like and when it will actually run.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.batch.v2alpha1.CronJobSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.batch.v2alpha1.CronJobSpec)
        io.kubernetes.client.proto.V2alpha1Batch.CronJobSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJobSpec_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJobSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.class, io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getJobTemplateFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        schedule_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        startingDeadlineSeconds_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        concurrencyPolicy_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        suspend_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        if (jobTemplateBuilder_ == null) {
          jobTemplate_ = null;
        } else {
          jobTemplateBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        successfulJobsHistoryLimit_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        failedJobsHistoryLimit_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

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

      public io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.getDefaultInstance();
      }

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

      public io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec buildPartial() {
        io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec result = new io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.schedule_ = schedule_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.startingDeadlineSeconds_ = startingDeadlineSeconds_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.concurrencyPolicy_ = concurrencyPolicy_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.suspend_ = suspend_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        if (jobTemplateBuilder_ == null) {
          result.jobTemplate_ = jobTemplate_;
        } else {
          result.jobTemplate_ = jobTemplateBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.successfulJobsHistoryLimit_ = successfulJobsHistoryLimit_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.failedJobsHistoryLimit_ = failedJobsHistoryLimit_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec other) {
        if (other == io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec.getDefaultInstance()) return this;
        if (other.hasSchedule()) {
          bitField0_ |= 0x00000001;
          schedule_ = other.schedule_;
          onChanged();
        }
        if (other.hasStartingDeadlineSeconds()) {
          setStartingDeadlineSeconds(other.getStartingDeadlineSeconds());
        }
        if (other.hasConcurrencyPolicy()) {
          bitField0_ |= 0x00000004;
          concurrencyPolicy_ = other.concurrencyPolicy_;
          onChanged();
        }
        if (other.hasSuspend()) {
          setSuspend(other.getSuspend());
        }
        if (other.hasJobTemplate()) {
          mergeJobTemplate(other.getJobTemplate());
        }
        if (other.hasSuccessfulJobsHistoryLimit()) {
          setSuccessfulJobsHistoryLimit(other.getSuccessfulJobsHistoryLimit());
        }
        if (other.hasFailedJobsHistoryLimit()) {
          setFailedJobsHistoryLimit(other.getFailedJobsHistoryLimit());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      private java.lang.Object schedule_ = "";
      /**
       * <pre>
       * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
       * </pre>
       *
       * <code>optional string schedule = 1;</code>
       */
      public boolean hasSchedule() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
       * </pre>
       *
       * <code>optional string schedule = 1;</code>
       */
      public java.lang.String getSchedule() {
        java.lang.Object ref = schedule_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            schedule_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
       * </pre>
       *
       * <code>optional string schedule = 1;</code>
       */
      public com.google.protobuf.ByteString
          getScheduleBytes() {
        java.lang.Object ref = schedule_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          schedule_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
       * </pre>
       *
       * <code>optional string schedule = 1;</code>
       */
      public Builder setSchedule(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        schedule_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
       * </pre>
       *
       * <code>optional string schedule = 1;</code>
       */
      public Builder clearSchedule() {
        bitField0_ = (bitField0_ & ~0x00000001);
        schedule_ = getDefaultInstance().getSchedule();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.
       * </pre>
       *
       * <code>optional string schedule = 1;</code>
       */
      public Builder setScheduleBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        schedule_ = value;
        onChanged();
        return this;
      }

      private long startingDeadlineSeconds_ ;
      /**
       * <pre>
       * Optional deadline in seconds for starting the job if it misses scheduled
       * time for any reason.  Missed jobs executions will be counted as failed ones.
       * +optional
       * </pre>
       *
       * <code>optional int64 startingDeadlineSeconds = 2;</code>
       */
      public boolean hasStartingDeadlineSeconds() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * Optional deadline in seconds for starting the job if it misses scheduled
       * time for any reason.  Missed jobs executions will be counted as failed ones.
       * +optional
       * </pre>
       *
       * <code>optional int64 startingDeadlineSeconds = 2;</code>
       */
      public long getStartingDeadlineSeconds() {
        return startingDeadlineSeconds_;
      }
      /**
       * <pre>
       * Optional deadline in seconds for starting the job if it misses scheduled
       * time for any reason.  Missed jobs executions will be counted as failed ones.
       * +optional
       * </pre>
       *
       * <code>optional int64 startingDeadlineSeconds = 2;</code>
       */
      public Builder setStartingDeadlineSeconds(long value) {
        bitField0_ |= 0x00000002;
        startingDeadlineSeconds_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional deadline in seconds for starting the job if it misses scheduled
       * time for any reason.  Missed jobs executions will be counted as failed ones.
       * +optional
       * </pre>
       *
       * <code>optional int64 startingDeadlineSeconds = 2;</code>
       */
      public Builder clearStartingDeadlineSeconds() {
        bitField0_ = (bitField0_ & ~0x00000002);
        startingDeadlineSeconds_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object concurrencyPolicy_ = "";
      /**
       * <pre>
       * Specifies how to treat concurrent executions of a Job.
       * Defaults to Allow.
       * +optional
       * </pre>
       *
       * <code>optional string concurrencyPolicy = 3;</code>
       */
      public boolean hasConcurrencyPolicy() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * Specifies how to treat concurrent executions of a Job.
       * Defaults to Allow.
       * +optional
       * </pre>
       *
       * <code>optional string concurrencyPolicy = 3;</code>
       */
      public java.lang.String getConcurrencyPolicy() {
        java.lang.Object ref = concurrencyPolicy_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            concurrencyPolicy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Specifies how to treat concurrent executions of a Job.
       * Defaults to Allow.
       * +optional
       * </pre>
       *
       * <code>optional string concurrencyPolicy = 3;</code>
       */
      public com.google.protobuf.ByteString
          getConcurrencyPolicyBytes() {
        java.lang.Object ref = concurrencyPolicy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          concurrencyPolicy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Specifies how to treat concurrent executions of a Job.
       * Defaults to Allow.
       * +optional
       * </pre>
       *
       * <code>optional string concurrencyPolicy = 3;</code>
       */
      public Builder setConcurrencyPolicy(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        concurrencyPolicy_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies how to treat concurrent executions of a Job.
       * Defaults to Allow.
       * +optional
       * </pre>
       *
       * <code>optional string concurrencyPolicy = 3;</code>
       */
      public Builder clearConcurrencyPolicy() {
        bitField0_ = (bitField0_ & ~0x00000004);
        concurrencyPolicy_ = getDefaultInstance().getConcurrencyPolicy();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specifies how to treat concurrent executions of a Job.
       * Defaults to Allow.
       * +optional
       * </pre>
       *
       * <code>optional string concurrencyPolicy = 3;</code>
       */
      public Builder setConcurrencyPolicyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        concurrencyPolicy_ = value;
        onChanged();
        return this;
      }

      private boolean suspend_ ;
      /**
       * <pre>
       * This flag tells the controller to suspend subsequent executions, it does
       * not apply to already started executions.  Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool suspend = 4;</code>
       */
      public boolean hasSuspend() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       * This flag tells the controller to suspend subsequent executions, it does
       * not apply to already started executions.  Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool suspend = 4;</code>
       */
      public boolean getSuspend() {
        return suspend_;
      }
      /**
       * <pre>
       * This flag tells the controller to suspend subsequent executions, it does
       * not apply to already started executions.  Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool suspend = 4;</code>
       */
      public Builder setSuspend(boolean value) {
        bitField0_ |= 0x00000008;
        suspend_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * This flag tells the controller to suspend subsequent executions, it does
       * not apply to already started executions.  Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool suspend = 4;</code>
       */
      public Builder clearSuspend() {
        bitField0_ = (bitField0_ & ~0x00000008);
        suspend_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec jobTemplate_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder> jobTemplateBuilder_;
      /**
       * <pre>
       * Specifies the job that will be created when executing a CronJob.
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
       */
      public boolean hasJobTemplate() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <pre>
       * Specifies the job that will be created when executing a CronJob.
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec getJobTemplate() {
        if (jobTemplateBuilder_ == null) {
          return jobTemplate_ == null ? io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance() : jobTemplate_;
        } else {
          return jobTemplateBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Specifies the job that will be created when executing a CronJob.
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
       */
      public Builder setJobTemplate(io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec value) {
        if (jobTemplateBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          jobTemplate_ = value;
          onChanged();
        } else {
          jobTemplateBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * Specifies the job that will be created when executing a CronJob.
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
       */
      public Builder setJobTemplate(
          io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder builderForValue) {
        if (jobTemplateBuilder_ == null) {
          jobTemplate_ = builderForValue.build();
          onChanged();
        } else {
          jobTemplateBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * Specifies the job that will be created when executing a CronJob.
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
       */
      public Builder mergeJobTemplate(io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec value) {
        if (jobTemplateBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              jobTemplate_ != null &&
              jobTemplate_ != io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance()) {
            jobTemplate_ =
              io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.newBuilder(jobTemplate_).mergeFrom(value).buildPartial();
          } else {
            jobTemplate_ = value;
          }
          onChanged();
        } else {
          jobTemplateBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * Specifies the job that will be created when executing a CronJob.
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
       */
      public Builder clearJobTemplate() {
        if (jobTemplateBuilder_ == null) {
          jobTemplate_ = null;
          onChanged();
        } else {
          jobTemplateBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <pre>
       * Specifies the job that will be created when executing a CronJob.
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder getJobTemplateBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getJobTemplateFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Specifies the job that will be created when executing a CronJob.
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder getJobTemplateOrBuilder() {
        if (jobTemplateBuilder_ != null) {
          return jobTemplateBuilder_.getMessageOrBuilder();
        } else {
          return jobTemplate_ == null ?
              io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance() : jobTemplate_;
        }
      }
      /**
       * <pre>
       * Specifies the job that will be created when executing a CronJob.
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec jobTemplate = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder> 
          getJobTemplateFieldBuilder() {
        if (jobTemplateBuilder_ == null) {
          jobTemplateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder>(
                  getJobTemplate(),
                  getParentForChildren(),
                  isClean());
          jobTemplate_ = null;
        }
        return jobTemplateBuilder_;
      }

      private int successfulJobsHistoryLimit_ ;
      /**
       * <pre>
       * The number of successful finished jobs to retain.
       * This is a pointer to distinguish between explicit zero and not specified.
       * +optional
       * </pre>
       *
       * <code>optional int32 successfulJobsHistoryLimit = 6;</code>
       */
      public boolean hasSuccessfulJobsHistoryLimit() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <pre>
       * The number of successful finished jobs to retain.
       * This is a pointer to distinguish between explicit zero and not specified.
       * +optional
       * </pre>
       *
       * <code>optional int32 successfulJobsHistoryLimit = 6;</code>
       */
      public int getSuccessfulJobsHistoryLimit() {
        return successfulJobsHistoryLimit_;
      }
      /**
       * <pre>
       * The number of successful finished jobs to retain.
       * This is a pointer to distinguish between explicit zero and not specified.
       * +optional
       * </pre>
       *
       * <code>optional int32 successfulJobsHistoryLimit = 6;</code>
       */
      public Builder setSuccessfulJobsHistoryLimit(int value) {
        bitField0_ |= 0x00000020;
        successfulJobsHistoryLimit_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The number of successful finished jobs to retain.
       * This is a pointer to distinguish between explicit zero and not specified.
       * +optional
       * </pre>
       *
       * <code>optional int32 successfulJobsHistoryLimit = 6;</code>
       */
      public Builder clearSuccessfulJobsHistoryLimit() {
        bitField0_ = (bitField0_ & ~0x00000020);
        successfulJobsHistoryLimit_ = 0;
        onChanged();
        return this;
      }

      private int failedJobsHistoryLimit_ ;
      /**
       * <pre>
       * The number of failed finished jobs to retain.
       * This is a pointer to distinguish between explicit zero and not specified.
       * +optional
       * </pre>
       *
       * <code>optional int32 failedJobsHistoryLimit = 7;</code>
       */
      public boolean hasFailedJobsHistoryLimit() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <pre>
       * The number of failed finished jobs to retain.
       * This is a pointer to distinguish between explicit zero and not specified.
       * +optional
       * </pre>
       *
       * <code>optional int32 failedJobsHistoryLimit = 7;</code>
       */
      public int getFailedJobsHistoryLimit() {
        return failedJobsHistoryLimit_;
      }
      /**
       * <pre>
       * The number of failed finished jobs to retain.
       * This is a pointer to distinguish between explicit zero and not specified.
       * +optional
       * </pre>
       *
       * <code>optional int32 failedJobsHistoryLimit = 7;</code>
       */
      public Builder setFailedJobsHistoryLimit(int value) {
        bitField0_ |= 0x00000040;
        failedJobsHistoryLimit_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The number of failed finished jobs to retain.
       * This is a pointer to distinguish between explicit zero and not specified.
       * +optional
       * </pre>
       *
       * <code>optional int32 failedJobsHistoryLimit = 7;</code>
       */
      public Builder clearFailedJobsHistoryLimit() {
        bitField0_ = (bitField0_ & ~0x00000040);
        failedJobsHistoryLimit_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.batch.v2alpha1.CronJobSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.batch.v2alpha1.CronJobSpec)
    private static final io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec();
    }

    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.kubernetes.client.proto.V2alpha1Batch.CronJobSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CronJobStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.batch.v2alpha1.CronJobStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A list of pointers to currently running jobs.
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1.ObjectReference> 
        getActiveList();
    /**
     * <pre>
     * A list of pointers to currently running jobs.
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReference getActive(int index);
    /**
     * <pre>
     * A list of pointers to currently running jobs.
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
     */
    int getActiveCount();
    /**
     * <pre>
     * A list of pointers to currently running jobs.
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
        getActiveOrBuilderList();
    /**
     * <pre>
     * A list of pointers to currently running jobs.
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
     */
    io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getActiveOrBuilder(
        int index);

    /**
     * <pre>
     * Information when was the last time the job was successfully scheduled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
     */
    boolean hasLastScheduleTime();
    /**
     * <pre>
     * Information when was the last time the job was successfully scheduled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
     */
    io.kubernetes.client.proto.Meta.Time getLastScheduleTime();
    /**
     * <pre>
     * Information when was the last time the job was successfully scheduled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastScheduleTimeOrBuilder();
  }
  /**
   * <pre>
   * CronJobStatus represents the current state of a cron job.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.batch.v2alpha1.CronJobStatus}
   */
  public  static final class CronJobStatus extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.batch.v2alpha1.CronJobStatus)
      CronJobStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CronJobStatus.newBuilder() to construct.
    private CronJobStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CronJobStatus() {
      active_ = java.util.Collections.emptyList();
    }

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

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJobStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.class, io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.Builder.class);
    }

    private int bitField0_;
    public static final int ACTIVE_FIELD_NUMBER = 1;
    private java.util.List<io.kubernetes.client.proto.V1.ObjectReference> active_;
    /**
     * <pre>
     * A list of pointers to currently running jobs.
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
     */
    public java.util.List<io.kubernetes.client.proto.V1.ObjectReference> getActiveList() {
      return active_;
    }
    /**
     * <pre>
     * A list of pointers to currently running jobs.
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
     */
    public java.util.List<? extends io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
        getActiveOrBuilderList() {
      return active_;
    }
    /**
     * <pre>
     * A list of pointers to currently running jobs.
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
     */
    public int getActiveCount() {
      return active_.size();
    }
    /**
     * <pre>
     * A list of pointers to currently running jobs.
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
     */
    public io.kubernetes.client.proto.V1.ObjectReference getActive(int index) {
      return active_.get(index);
    }
    /**
     * <pre>
     * A list of pointers to currently running jobs.
     * +optional
     * </pre>
     *
     * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
     */
    public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getActiveOrBuilder(
        int index) {
      return active_.get(index);
    }

    public static final int LASTSCHEDULETIME_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.Meta.Time lastScheduleTime_;
    /**
     * <pre>
     * Information when was the last time the job was successfully scheduled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
     */
    public boolean hasLastScheduleTime() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Information when was the last time the job was successfully scheduled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
     */
    public io.kubernetes.client.proto.Meta.Time getLastScheduleTime() {
      return lastScheduleTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastScheduleTime_;
    }
    /**
     * <pre>
     * Information when was the last time the job was successfully scheduled.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
     */
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastScheduleTimeOrBuilder() {
      return lastScheduleTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastScheduleTime_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

      boolean result = true;
      result = result && getActiveList()
          .equals(other.getActiveList());
      result = result && (hasLastScheduleTime() == other.hasLastScheduleTime());
      if (hasLastScheduleTime()) {
        result = result && getLastScheduleTime()
            .equals(other.getLastScheduleTime());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getActiveCount() > 0) {
        hash = (37 * hash) + ACTIVE_FIELD_NUMBER;
        hash = (53 * hash) + getActiveList().hashCode();
      }
      if (hasLastScheduleTime()) {
        hash = (37 * hash) + LASTSCHEDULETIME_FIELD_NUMBER;
        hash = (53 * hash) + getLastScheduleTime().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CronJobStatus represents the current state of a cron job.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.batch.v2alpha1.CronJobStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.batch.v2alpha1.CronJobStatus)
        io.kubernetes.client.proto.V2alpha1Batch.CronJobStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJobStatus_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_CronJobStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.class, io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getActiveFieldBuilder();
          getLastScheduleTimeFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (activeBuilder_ == null) {
          active_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          activeBuilder_.clear();
        }
        if (lastScheduleTimeBuilder_ == null) {
          lastScheduleTime_ = null;
        } else {
          lastScheduleTimeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.getDefaultInstance();
      }

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

      public io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus buildPartial() {
        io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus result = new io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (activeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            active_ = java.util.Collections.unmodifiableList(active_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.active_ = active_;
        } else {
          result.active_ = activeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        if (lastScheduleTimeBuilder_ == null) {
          result.lastScheduleTime_ = lastScheduleTime_;
        } else {
          result.lastScheduleTime_ = lastScheduleTimeBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus other) {
        if (other == io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus.getDefaultInstance()) return this;
        if (activeBuilder_ == null) {
          if (!other.active_.isEmpty()) {
            if (active_.isEmpty()) {
              active_ = other.active_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureActiveIsMutable();
              active_.addAll(other.active_);
            }
            onChanged();
          }
        } else {
          if (!other.active_.isEmpty()) {
            if (activeBuilder_.isEmpty()) {
              activeBuilder_.dispose();
              activeBuilder_ = null;
              active_ = other.active_;
              bitField0_ = (bitField0_ & ~0x00000001);
              activeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getActiveFieldBuilder() : null;
            } else {
              activeBuilder_.addAllMessages(other.active_);
            }
          }
        }
        if (other.hasLastScheduleTime()) {
          mergeLastScheduleTime(other.getLastScheduleTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      private java.util.List<io.kubernetes.client.proto.V1.ObjectReference> active_ =
        java.util.Collections.emptyList();
      private void ensureActiveIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          active_ = new java.util.ArrayList<io.kubernetes.client.proto.V1.ObjectReference>(active_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> activeBuilder_;

      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ObjectReference> getActiveList() {
        if (activeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(active_);
        } else {
          return activeBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public int getActiveCount() {
        if (activeBuilder_ == null) {
          return active_.size();
        } else {
          return activeBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference getActive(int index) {
        if (activeBuilder_ == null) {
          return active_.get(index);
        } else {
          return activeBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public Builder setActive(
          int index, io.kubernetes.client.proto.V1.ObjectReference value) {
        if (activeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureActiveIsMutable();
          active_.set(index, value);
          onChanged();
        } else {
          activeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public Builder setActive(
          int index, io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (activeBuilder_ == null) {
          ensureActiveIsMutable();
          active_.set(index, builderForValue.build());
          onChanged();
        } else {
          activeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public Builder addActive(io.kubernetes.client.proto.V1.ObjectReference value) {
        if (activeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureActiveIsMutable();
          active_.add(value);
          onChanged();
        } else {
          activeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public Builder addActive(
          int index, io.kubernetes.client.proto.V1.ObjectReference value) {
        if (activeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureActiveIsMutable();
          active_.add(index, value);
          onChanged();
        } else {
          activeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public Builder addActive(
          io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (activeBuilder_ == null) {
          ensureActiveIsMutable();
          active_.add(builderForValue.build());
          onChanged();
        } else {
          activeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public Builder addActive(
          int index, io.kubernetes.client.proto.V1.ObjectReference.Builder builderForValue) {
        if (activeBuilder_ == null) {
          ensureActiveIsMutable();
          active_.add(index, builderForValue.build());
          onChanged();
        } else {
          activeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public Builder addAllActive(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1.ObjectReference> values) {
        if (activeBuilder_ == null) {
          ensureActiveIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, active_);
          onChanged();
        } else {
          activeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public Builder clearActive() {
        if (activeBuilder_ == null) {
          active_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          activeBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public Builder removeActive(int index) {
        if (activeBuilder_ == null) {
          ensureActiveIsMutable();
          active_.remove(index);
          onChanged();
        } else {
          activeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder getActiveBuilder(
          int index) {
        return getActiveFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder getActiveOrBuilder(
          int index) {
        if (activeBuilder_ == null) {
          return active_.get(index);  } else {
          return activeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
           getActiveOrBuilderList() {
        if (activeBuilder_ != null) {
          return activeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(active_);
        }
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder addActiveBuilder() {
        return getActiveFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public io.kubernetes.client.proto.V1.ObjectReference.Builder addActiveBuilder(
          int index) {
        return getActiveFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1.ObjectReference.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of pointers to currently running jobs.
       * +optional
       * </pre>
       *
       * <code>repeated .k8s.io.api.core.v1.ObjectReference active = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1.ObjectReference.Builder> 
           getActiveBuilderList() {
        return getActiveFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder> 
          getActiveFieldBuilder() {
        if (activeBuilder_ == null) {
          activeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.kubernetes.client.proto.V1.ObjectReference, io.kubernetes.client.proto.V1.ObjectReference.Builder, io.kubernetes.client.proto.V1.ObjectReferenceOrBuilder>(
                  active_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          active_ = null;
        }
        return activeBuilder_;
      }

      private io.kubernetes.client.proto.Meta.Time lastScheduleTime_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> lastScheduleTimeBuilder_;
      /**
       * <pre>
       * Information when was the last time the job was successfully scheduled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
       */
      public boolean hasLastScheduleTime() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * Information when was the last time the job was successfully scheduled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.Time getLastScheduleTime() {
        if (lastScheduleTimeBuilder_ == null) {
          return lastScheduleTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastScheduleTime_;
        } else {
          return lastScheduleTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Information when was the last time the job was successfully scheduled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
       */
      public Builder setLastScheduleTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastScheduleTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastScheduleTime_ = value;
          onChanged();
        } else {
          lastScheduleTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Information when was the last time the job was successfully scheduled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
       */
      public Builder setLastScheduleTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (lastScheduleTimeBuilder_ == null) {
          lastScheduleTime_ = builderForValue.build();
          onChanged();
        } else {
          lastScheduleTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Information when was the last time the job was successfully scheduled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
       */
      public Builder mergeLastScheduleTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastScheduleTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              lastScheduleTime_ != null &&
              lastScheduleTime_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            lastScheduleTime_ =
              io.kubernetes.client.proto.Meta.Time.newBuilder(lastScheduleTime_).mergeFrom(value).buildPartial();
          } else {
            lastScheduleTime_ = value;
          }
          onChanged();
        } else {
          lastScheduleTimeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Information when was the last time the job was successfully scheduled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
       */
      public Builder clearLastScheduleTime() {
        if (lastScheduleTimeBuilder_ == null) {
          lastScheduleTime_ = null;
          onChanged();
        } else {
          lastScheduleTimeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * Information when was the last time the job was successfully scheduled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastScheduleTimeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getLastScheduleTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Information when was the last time the job was successfully scheduled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastScheduleTimeOrBuilder() {
        if (lastScheduleTimeBuilder_ != null) {
          return lastScheduleTimeBuilder_.getMessageOrBuilder();
        } else {
          return lastScheduleTime_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastScheduleTime_;
        }
      }
      /**
       * <pre>
       * Information when was the last time the job was successfully scheduled.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> 
          getLastScheduleTimeFieldBuilder() {
        if (lastScheduleTimeBuilder_ == null) {
          lastScheduleTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getLastScheduleTime(),
                  getParentForChildren(),
                  isClean());
          lastScheduleTime_ = null;
        }
        return lastScheduleTimeBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.batch.v2alpha1.CronJobStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.batch.v2alpha1.CronJobStatus)
    private static final io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus();
    }

    public static io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.kubernetes.client.proto.V2alpha1Batch.CronJobStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JobTemplateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.batch.v2alpha1.JobTemplate)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * More info: https://git.k8s.io/community/contributors/devel/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>
     * Defines jobs that will be created from this template.
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
     */
    boolean hasTemplate();
    /**
     * <pre>
     * Defines jobs that will be created from this template.
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
     */
    io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec getTemplate();
    /**
     * <pre>
     * Defines jobs that will be created from this template.
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
     */
    io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder getTemplateOrBuilder();
  }
  /**
   * <pre>
   * JobTemplate describes a template for creating copies of a predefined pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.batch.v2alpha1.JobTemplate}
   */
  public  static final class JobTemplate extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.batch.v2alpha1.JobTemplate)
      JobTemplateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use JobTemplate.newBuilder() to construct.
    private JobTemplate(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private JobTemplate() {
    }

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

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_JobTemplate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V2alpha1Batch.JobTemplate.class, io.kubernetes.client.proto.V2alpha1Batch.JobTemplate.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/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata.
     * More info: https://git.k8s.io/community/contributors/devel/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 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/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() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }

    public static final int TEMPLATE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec template_;
    /**
     * <pre>
     * Defines jobs that will be created from this template.
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
     */
    public boolean hasTemplate() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * Defines jobs that will be created from this template.
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
     */
    public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec getTemplate() {
      return template_ == null ? io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance() : template_;
    }
    /**
     * <pre>
     * Defines jobs that will be created from this template.
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
     */
    public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder getTemplateOrBuilder() {
      return template_ == null ? io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance() : template_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getMetadata());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, getTemplate());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTemplate());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V2alpha1Batch.JobTemplate prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * JobTemplate describes a template for creating copies of a predefined pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.batch.v2alpha1.JobTemplate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.batch.v2alpha1.JobTemplate)
        io.kubernetes.client.proto.V2alpha1Batch.JobTemplateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_JobTemplate_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_JobTemplate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V2alpha1Batch.JobTemplate.class, io.kubernetes.client.proto.V2alpha1Batch.JobTemplate.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getTemplateFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (templateBuilder_ == null) {
          template_ = null;
        } else {
          templateBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public io.kubernetes.client.proto.V2alpha1Batch.JobTemplate getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V2alpha1Batch.JobTemplate.getDefaultInstance();
      }

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

      public io.kubernetes.client.proto.V2alpha1Batch.JobTemplate buildPartial() {
        io.kubernetes.client.proto.V2alpha1Batch.JobTemplate result = new io.kubernetes.client.proto.V2alpha1Batch.JobTemplate(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (templateBuilder_ == null) {
          result.template_ = template_;
        } else {
          result.template_ = templateBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V2alpha1Batch.JobTemplate other) {
        if (other == io.kubernetes.client.proto.V2alpha1Batch.JobTemplate.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasTemplate()) {
          mergeTemplate(other.getTemplate());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      private io.kubernetes.client.proto.Meta.ObjectMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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 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/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;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ObjectMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * More info: https://git.k8s.io/community/contributors/devel/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/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/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec template_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder> templateBuilder_;
      /**
       * <pre>
       * Defines jobs that will be created from this template.
       * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
       */
      public boolean hasTemplate() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * Defines jobs that will be created from this template.
       * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec getTemplate() {
        if (templateBuilder_ == null) {
          return template_ == null ? io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance() : template_;
        } else {
          return templateBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Defines jobs that will be created from this template.
       * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
       */
      public Builder setTemplate(io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec value) {
        if (templateBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          template_ = value;
          onChanged();
        } else {
          templateBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Defines jobs that will be created from this template.
       * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
       */
      public Builder setTemplate(
          io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder builderForValue) {
        if (templateBuilder_ == null) {
          template_ = builderForValue.build();
          onChanged();
        } else {
          templateBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Defines jobs that will be created from this template.
       * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
       */
      public Builder mergeTemplate(io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec value) {
        if (templateBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              template_ != null &&
              template_ != io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance()) {
            template_ =
              io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.newBuilder(template_).mergeFrom(value).buildPartial();
          } else {
            template_ = value;
          }
          onChanged();
        } else {
          templateBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Defines jobs that will be created from this template.
       * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
       */
      public Builder clearTemplate() {
        if (templateBuilder_ == null) {
          template_ = null;
          onChanged();
        } else {
          templateBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * Defines jobs that will be created from this template.
       * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder getTemplateBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTemplateFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Defines jobs that will be created from this template.
       * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
       */
      public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder getTemplateOrBuilder() {
        if (templateBuilder_ != null) {
          return templateBuilder_.getMessageOrBuilder();
        } else {
          return template_ == null ?
              io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance() : template_;
        }
      }
      /**
       * <pre>
       * Defines jobs that will be created from this template.
       * https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v2alpha1.JobTemplateSpec template = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder> 
          getTemplateFieldBuilder() {
        if (templateBuilder_ == null) {
          templateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder>(
                  getTemplate(),
                  getParentForChildren(),
                  isClean());
          template_ = null;
        }
        return templateBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.batch.v2alpha1.JobTemplate)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.batch.v2alpha1.JobTemplate)
    private static final io.kubernetes.client.proto.V2alpha1Batch.JobTemplate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V2alpha1Batch.JobTemplate();
    }

    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.kubernetes.client.proto.V2alpha1Batch.JobTemplate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JobTemplateSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.batch.v2alpha1.JobTemplateSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata of the jobs created from this template.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata of the jobs created from this template.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata of the jobs created from this template.
     * More info: https://git.k8s.io/community/contributors/devel/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 job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
     */
    boolean hasSpec();
    /**
     * <pre>
     * Specification of the desired behavior of the job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1Batch.JobSpec getSpec();
    /**
     * <pre>
     * Specification of the desired behavior of the job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1Batch.JobSpecOrBuilder getSpecOrBuilder();
  }
  /**
   * <pre>
   * JobTemplateSpec describes the data a Job should have when created from a template
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.batch.v2alpha1.JobTemplateSpec}
   */
  public  static final class JobTemplateSpec extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.batch.v2alpha1.JobTemplateSpec)
      JobTemplateSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use JobTemplateSpec.newBuilder() to construct.
    private JobTemplateSpec(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private JobTemplateSpec() {
    }

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

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_JobTemplateSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.class, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.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 of the jobs created from this template.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata of the jobs created from this template.
     * More info: https://git.k8s.io/community/contributors/devel/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 getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata of the jobs created from this template.
     * More info: https://git.k8s.io/community/contributors/devel/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() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }

    public static final int SPEC_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1Batch.JobSpec spec_;
    /**
     * <pre>
     * Specification of the desired behavior of the job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
     */
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * Specification of the desired behavior of the job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
     */
    public io.kubernetes.client.proto.V1Batch.JobSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1Batch.JobSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * Specification of the desired behavior of the job.
     * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
     */
    public io.kubernetes.client.proto.V1Batch.JobSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1Batch.JobSpec.getDefaultInstance() : spec_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getMetadata());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, getSpec());
      }
      unknownFields.writeTo(output);
    }

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

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

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

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

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

    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * JobTemplateSpec describes the data a Job should have when created from a template
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.batch.v2alpha1.JobTemplateSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.batch.v2alpha1.JobTemplateSpec)
        io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_JobTemplateSpec_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V2alpha1Batch.internal_static_k8s_io_api_batch_v2alpha1_JobTemplateSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.class, io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getSpecFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (specBuilder_ == null) {
          spec_ = null;
        } else {
          specBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance();
      }

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

      public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec buildPartial() {
        io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec result = new io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (specBuilder_ == null) {
          result.spec_ = spec_;
        } else {
          result.spec_ = specBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec other) {
        if (other == io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasSpec()) {
          mergeSpec(other.getSpec());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

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

      private io.kubernetes.client.proto.Meta.ObjectMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata of the jobs created from this template.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata of the jobs created from this template.
       * More info: https://git.k8s.io/community/contributors/devel/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 getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Standard object's metadata of the jobs created from this template.
       * More info: https://git.k8s.io/community/contributors/devel/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;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata of the jobs created from this template.
       * More info: https://git.k8s.io/community/contributors/devel/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();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata of the jobs created from this template.
       * More info: https://git.k8s.io/community/contributors/devel/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) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ObjectMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata of the jobs created from this template.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata of the jobs created from this template.
       * More info: https://git.k8s.io/community/contributors/devel/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 of the jobs created from this template.
       * More info: https://git.k8s.io/community/contributors/devel/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 of the jobs created from this template.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private io.kubernetes.client.proto.V1Batch.JobSpec spec_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V1Batch.JobSpec, io.kubernetes.client.proto.V1Batch.JobSpec.Builder, io.kubernetes.client.proto.V1Batch.JobSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * Specification of the desired behavior of the job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * Specification of the desired behavior of the job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1Batch.JobSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1Batch.JobSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Specification of the desired behavior of the job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1Batch.JobSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
          onChanged();
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1Batch.JobSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
          onChanged();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1Batch.JobSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              spec_ != null &&
              spec_ != io.kubernetes.client.proto.V1Batch.JobSpec.getDefaultInstance()) {
            spec_ =
              io.kubernetes.client.proto.V1Batch.JobSpec.newBuilder(spec_).mergeFrom(value).buildPartial();
          } else {
            spec_ = value;
          }
          onChanged();
        } else {
          specBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        if (specBuilder_ == null) {
          spec_ = null;
          onChanged();
        } else {
          specBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * Specification of the desired behavior of the job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1Batch.JobSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Specification of the desired behavior of the job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1Batch.JobSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1Batch.JobSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * Specification of the desired behavior of the job.
       * More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.api.batch.v1.JobSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V1Batch.JobSpec, io.kubernetes.client.proto.V1Batch.JobSpec.Builder, io.kubernetes.client.proto.V1Batch.JobSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.V1Batch.JobSpec, io.kubernetes.client.proto.V1Batch.JobSpec.Builder, io.kubernetes.client.proto.V1Batch.JobSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.batch.v2alpha1.JobTemplateSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.batch.v2alpha1.JobTemplateSpec)
    private static final io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec();
    }

    public static io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.kubernetes.client.proto.V2alpha1Batch.JobTemplateSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_batch_v2alpha1_CronJob_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_batch_v2alpha1_CronJob_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_batch_v2alpha1_CronJobList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_batch_v2alpha1_CronJobList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_batch_v2alpha1_CronJobSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_batch_v2alpha1_CronJobSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_batch_v2alpha1_CronJobStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_batch_v2alpha1_CronJobStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_batch_v2alpha1_JobTemplate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_batch_v2alpha1_JobTemplate_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_batch_v2alpha1_JobTemplateSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_batch_v2alpha1_JobTemplateSpec_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/batch/v2alpha1/generated.pr" +
      "oto\022\031k8s.io.api.batch.v2alpha1\032#k8s.io/a" +
      "pi/batch/v1/generated.proto\032\"k8s.io/api/" +
      "core/v1/generated.proto\0324k8s.io/apimachi" +
      "nery/pkg/apis/meta/v1/generated.proto\032/k" +
      "8s.io/apimachinery/pkg/runtime/generated" +
      ".proto\0326k8s.io/apimachinery/pkg/runtime/" +
      "schema/generated.proto\0323k8s.io/apimachin" +
      "ery/pkg/util/intstr/generated.proto\"\275\001\n\007" +
      "CronJob\022B\n\010metadata\030\001 \001(\01320.k8s.io.apima",
      "chinery.pkg.apis.meta.v1.ObjectMeta\0224\n\004s" +
      "pec\030\002 \001(\0132&.k8s.io.api.batch.v2alpha1.Cr" +
      "onJobSpec\0228\n\006status\030\003 \001(\0132(.k8s.io.api.b" +
      "atch.v2alpha1.CronJobStatus\"\202\001\n\013CronJobL" +
      "ist\022@\n\010metadata\030\001 \001(\0132..k8s.io.apimachin" +
      "ery.pkg.apis.meta.v1.ListMeta\0221\n\005items\030\002" +
      " \003(\0132\".k8s.io.api.batch.v2alpha1.CronJob" +
      "\"\361\001\n\013CronJobSpec\022\020\n\010schedule\030\001 \001(\t\022\037\n\027st" +
      "artingDeadlineSeconds\030\002 \001(\003\022\031\n\021concurren" +
      "cyPolicy\030\003 \001(\t\022\017\n\007suspend\030\004 \001(\010\022?\n\013jobTe",
      "mplate\030\005 \001(\0132*.k8s.io.api.batch.v2alpha1" +
      ".JobTemplateSpec\022\"\n\032successfulJobsHistor" +
      "yLimit\030\006 \001(\005\022\036\n\026failedJobsHistoryLimit\030\007" +
      " \001(\005\"\212\001\n\rCronJobStatus\0223\n\006active\030\001 \003(\0132#" +
      ".k8s.io.api.core.v1.ObjectReference\022D\n\020l" +
      "astScheduleTime\030\004 \001(\0132*.k8s.io.apimachin" +
      "ery.pkg.apis.meta.v1.Time\"\217\001\n\013JobTemplat" +
      "e\022B\n\010metadata\030\001 \001(\01320.k8s.io.apimachiner" +
      "y.pkg.apis.meta.v1.ObjectMeta\022<\n\010templat" +
      "e\030\002 \001(\0132*.k8s.io.api.batch.v2alpha1.JobT",
      "emplateSpec\"\201\001\n\017JobTemplateSpec\022B\n\010metad" +
      "ata\030\001 \001(\01320.k8s.io.apimachinery.pkg.apis" +
      ".meta.v1.ObjectMeta\022*\n\004spec\030\002 \001(\0132\034.k8s." +
      "io.api.batch.v1.JobSpecB5\n\032io.kubernetes" +
      ".client.protoB\rV2alpha1BatchZ\010v2alpha1"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          io.kubernetes.client.proto.V1Batch.getDescriptor(),
          io.kubernetes.client.proto.V1.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(),
        }, assigner);
    internal_static_k8s_io_api_batch_v2alpha1_CronJob_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_k8s_io_api_batch_v2alpha1_CronJob_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_batch_v2alpha1_CronJob_descriptor,
        new java.lang.String[] { "Metadata", "Spec", "Status", });
    internal_static_k8s_io_api_batch_v2alpha1_CronJobList_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_k8s_io_api_batch_v2alpha1_CronJobList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_batch_v2alpha1_CronJobList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_batch_v2alpha1_CronJobSpec_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_k8s_io_api_batch_v2alpha1_CronJobSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_batch_v2alpha1_CronJobSpec_descriptor,
        new java.lang.String[] { "Schedule", "StartingDeadlineSeconds", "ConcurrencyPolicy", "Suspend", "JobTemplate", "SuccessfulJobsHistoryLimit", "FailedJobsHistoryLimit", });
    internal_static_k8s_io_api_batch_v2alpha1_CronJobStatus_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_k8s_io_api_batch_v2alpha1_CronJobStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_batch_v2alpha1_CronJobStatus_descriptor,
        new java.lang.String[] { "Active", "LastScheduleTime", });
    internal_static_k8s_io_api_batch_v2alpha1_JobTemplate_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_k8s_io_api_batch_v2alpha1_JobTemplate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_batch_v2alpha1_JobTemplate_descriptor,
        new java.lang.String[] { "Metadata", "Template", });
    internal_static_k8s_io_api_batch_v2alpha1_JobTemplateSpec_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_k8s_io_api_batch_v2alpha1_JobTemplateSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_batch_v2alpha1_JobTemplateSpec_descriptor,
        new java.lang.String[] { "Metadata", "Spec", });
    io.kubernetes.client.proto.V1Batch.getDescriptor();
    io.kubernetes.client.proto.V1.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)
}
