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

package io.kubernetes.client.proto;

public final class V1beta1Admission {
  private V1beta1Admission() {}
  static {
    com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
      com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
      /* major= */ 4,
      /* minor= */ 26,
      /* patch= */ 1,
      /* suffix= */ "",
      V1beta1Admission.class.getName());
  }
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface AdmissionRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.admission.v1beta1.AdmissionRequest)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <pre>
     * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
     * @return Whether the kind field is set.
     */
    boolean hasKind();
    /**
     * <pre>
     * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
     * @return The kind.
     */
    io.kubernetes.client.proto.Meta.GroupVersionKind getKind();
    /**
     * <pre>
     * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
     */
    io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder getKindOrBuilder();

    /**
     * <pre>
     * Resource is the fully-qualified resource being requested (for example, v1.pods)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
     * @return Whether the resource field is set.
     */
    boolean hasResource();
    /**
     * <pre>
     * Resource is the fully-qualified resource being requested (for example, v1.pods)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
     * @return The resource.
     */
    io.kubernetes.client.proto.Meta.GroupVersionResource getResource();
    /**
     * <pre>
     * Resource is the fully-qualified resource being requested (for example, v1.pods)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
     */
    io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder getResourceOrBuilder();

    /**
     * <pre>
     * SubResource is the subresource being requested, if any (for example, "status" or "scale")
     * +optional
     * </pre>
     *
     * <code>optional string subResource = 4;</code>
     * @return Whether the subResource field is set.
     */
    boolean hasSubResource();
    /**
     * <pre>
     * SubResource is the subresource being requested, if any (for example, "status" or "scale")
     * +optional
     * </pre>
     *
     * <code>optional string subResource = 4;</code>
     * @return The subResource.
     */
    java.lang.String getSubResource();
    /**
     * <pre>
     * SubResource is the subresource being requested, if any (for example, "status" or "scale")
     * +optional
     * </pre>
     *
     * <code>optional string subResource = 4;</code>
     * @return The bytes for subResource.
     */
    com.google.protobuf.ByteString
        getSubResourceBytes();

    /**
     * <pre>
     * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
     * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
     * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
     * @return Whether the requestKind field is set.
     */
    boolean hasRequestKind();
    /**
     * <pre>
     * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
     * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
     * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
     * @return The requestKind.
     */
    io.kubernetes.client.proto.Meta.GroupVersionKind getRequestKind();
    /**
     * <pre>
     * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
     * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
     * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
     */
    io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder getRequestKindOrBuilder();

    /**
     * <pre>
     * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
     * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
     * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
     * @return Whether the requestResource field is set.
     */
    boolean hasRequestResource();
    /**
     * <pre>
     * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
     * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
     * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
     * @return The requestResource.
     */
    io.kubernetes.client.proto.Meta.GroupVersionResource getRequestResource();
    /**
     * <pre>
     * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
     * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
     * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
     */
    io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder getRequestResourceOrBuilder();

    /**
     * <pre>
     * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
     * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional string requestSubResource = 15;</code>
     * @return Whether the requestSubResource field is set.
     */
    boolean hasRequestSubResource();
    /**
     * <pre>
     * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
     * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional string requestSubResource = 15;</code>
     * @return The requestSubResource.
     */
    java.lang.String getRequestSubResource();
    /**
     * <pre>
     * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
     * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional string requestSubResource = 15;</code>
     * @return The bytes for requestSubResource.
     */
    com.google.protobuf.ByteString
        getRequestSubResourceBytes();

    /**
     * <pre>
     * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
     * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
     * +optional
     * </pre>
     *
     * <code>optional string name = 5;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
     * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
     * +optional
     * </pre>
     *
     * <code>optional string name = 5;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
     * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
     * +optional
     * </pre>
     *
     * <code>optional string name = 5;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Namespace is the namespace associated with the request (if any).
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 6;</code>
     * @return Whether the namespace field is set.
     */
    boolean hasNamespace();
    /**
     * <pre>
     * Namespace is the namespace associated with the request (if any).
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 6;</code>
     * @return The namespace.
     */
    java.lang.String getNamespace();
    /**
     * <pre>
     * Namespace is the namespace associated with the request (if any).
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 6;</code>
     * @return The bytes for namespace.
     */
    com.google.protobuf.ByteString
        getNamespaceBytes();

    /**
     * <pre>
     * Operation is the operation being performed. This may be different than the operation
     * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
     * </pre>
     *
     * <code>optional string operation = 7;</code>
     * @return Whether the operation field is set.
     */
    boolean hasOperation();
    /**
     * <pre>
     * Operation is the operation being performed. This may be different than the operation
     * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
     * </pre>
     *
     * <code>optional string operation = 7;</code>
     * @return The operation.
     */
    java.lang.String getOperation();
    /**
     * <pre>
     * Operation is the operation being performed. This may be different than the operation
     * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
     * </pre>
     *
     * <code>optional string operation = 7;</code>
     * @return The bytes for operation.
     */
    com.google.protobuf.ByteString
        getOperationBytes();

    /**
     * <pre>
     * UserInfo is information about the requesting user
     * </pre>
     *
     * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
     * @return Whether the userInfo field is set.
     */
    boolean hasUserInfo();
    /**
     * <pre>
     * UserInfo is information about the requesting user
     * </pre>
     *
     * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
     * @return The userInfo.
     */
    io.kubernetes.client.proto.V1Authentication.UserInfo getUserInfo();
    /**
     * <pre>
     * UserInfo is information about the requesting user
     * </pre>
     *
     * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
     */
    io.kubernetes.client.proto.V1Authentication.UserInfoOrBuilder getUserInfoOrBuilder();

    /**
     * <pre>
     * Object is the object from the incoming request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
     * @return Whether the object field is set.
     */
    boolean hasObject();
    /**
     * <pre>
     * Object is the object from the incoming request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
     * @return The object.
     */
    io.kubernetes.client.proto.Runtime.RawExtension getObject();
    /**
     * <pre>
     * Object is the object from the incoming request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
     */
    io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getObjectOrBuilder();

    /**
     * <pre>
     * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
     * @return Whether the oldObject field is set.
     */
    boolean hasOldObject();
    /**
     * <pre>
     * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
     * @return The oldObject.
     */
    io.kubernetes.client.proto.Runtime.RawExtension getOldObject();
    /**
     * <pre>
     * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
     */
    io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getOldObjectOrBuilder();

    /**
     * <pre>
     * DryRun indicates that modifications will definitely not be persisted for this request.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool dryRun = 11;</code>
     * @return Whether the dryRun field is set.
     */
    boolean hasDryRun();
    /**
     * <pre>
     * DryRun indicates that modifications will definitely not be persisted for this request.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool dryRun = 11;</code>
     * @return The dryRun.
     */
    boolean getDryRun();

    /**
     * <pre>
     * Options is the operation option structure of the operation being performed.
     * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
     * different than the options the caller provided. e.g. for a patch request the performed
     * Operation might be a CREATE, in which case the Options will a
     * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
     * @return Whether the options field is set.
     */
    boolean hasOptions();
    /**
     * <pre>
     * Options is the operation option structure of the operation being performed.
     * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
     * different than the options the caller provided. e.g. for a patch request the performed
     * Operation might be a CREATE, in which case the Options will a
     * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
     * @return The options.
     */
    io.kubernetes.client.proto.Runtime.RawExtension getOptions();
    /**
     * <pre>
     * Options is the operation option structure of the operation being performed.
     * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
     * different than the options the caller provided. e.g. for a patch request the performed
     * Operation might be a CREATE, in which case the Options will a
     * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
     */
    io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getOptionsOrBuilder();
  }
  /**
   * <pre>
   * AdmissionRequest describes the admission.Attributes for the admission request.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.admission.v1beta1.AdmissionRequest}
   */
  public static final class AdmissionRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.admission.v1beta1.AdmissionRequest)
      AdmissionRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        AdmissionRequest.class.getName());
    }
    // Use AdmissionRequest.newBuilder() to construct.
    private AdmissionRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AdmissionRequest() {
      uid_ = "";
      subResource_ = "";
      requestSubResource_ = "";
      name_ = "";
      namespace_ = "";
      operation_ = "";
    }

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

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

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

    public static final int KIND_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.Meta.GroupVersionKind kind_;
    /**
     * <pre>
     * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
     * @return Whether the kind field is set.
     */
    @java.lang.Override
    public boolean hasKind() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
     * @return The kind.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.GroupVersionKind getKind() {
      return kind_ == null ? io.kubernetes.client.proto.Meta.GroupVersionKind.getDefaultInstance() : kind_;
    }
    /**
     * <pre>
     * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder getKindOrBuilder() {
      return kind_ == null ? io.kubernetes.client.proto.Meta.GroupVersionKind.getDefaultInstance() : kind_;
    }

    public static final int RESOURCE_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.Meta.GroupVersionResource resource_;
    /**
     * <pre>
     * Resource is the fully-qualified resource being requested (for example, v1.pods)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
     * @return Whether the resource field is set.
     */
    @java.lang.Override
    public boolean hasResource() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Resource is the fully-qualified resource being requested (for example, v1.pods)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
     * @return The resource.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.GroupVersionResource getResource() {
      return resource_ == null ? io.kubernetes.client.proto.Meta.GroupVersionResource.getDefaultInstance() : resource_;
    }
    /**
     * <pre>
     * Resource is the fully-qualified resource being requested (for example, v1.pods)
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder getResourceOrBuilder() {
      return resource_ == null ? io.kubernetes.client.proto.Meta.GroupVersionResource.getDefaultInstance() : resource_;
    }

    public static final int SUBRESOURCE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object subResource_ = "";
    /**
     * <pre>
     * SubResource is the subresource being requested, if any (for example, "status" or "scale")
     * +optional
     * </pre>
     *
     * <code>optional string subResource = 4;</code>
     * @return Whether the subResource field is set.
     */
    @java.lang.Override
    public boolean hasSubResource() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * SubResource is the subresource being requested, if any (for example, "status" or "scale")
     * +optional
     * </pre>
     *
     * <code>optional string subResource = 4;</code>
     * @return The subResource.
     */
    @java.lang.Override
    public java.lang.String getSubResource() {
      java.lang.Object ref = subResource_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          subResource_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * SubResource is the subresource being requested, if any (for example, "status" or "scale")
     * +optional
     * </pre>
     *
     * <code>optional string subResource = 4;</code>
     * @return The bytes for subResource.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSubResourceBytes() {
      java.lang.Object ref = subResource_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        subResource_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REQUESTKIND_FIELD_NUMBER = 13;
    private io.kubernetes.client.proto.Meta.GroupVersionKind requestKind_;
    /**
     * <pre>
     * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
     * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
     * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
     * @return Whether the requestKind field is set.
     */
    @java.lang.Override
    public boolean hasRequestKind() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
     * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
     * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
     * @return The requestKind.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.GroupVersionKind getRequestKind() {
      return requestKind_ == null ? io.kubernetes.client.proto.Meta.GroupVersionKind.getDefaultInstance() : requestKind_;
    }
    /**
     * <pre>
     * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
     * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
     * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder getRequestKindOrBuilder() {
      return requestKind_ == null ? io.kubernetes.client.proto.Meta.GroupVersionKind.getDefaultInstance() : requestKind_;
    }

    public static final int REQUESTRESOURCE_FIELD_NUMBER = 14;
    private io.kubernetes.client.proto.Meta.GroupVersionResource requestResource_;
    /**
     * <pre>
     * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
     * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
     * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
     * @return Whether the requestResource field is set.
     */
    @java.lang.Override
    public boolean hasRequestResource() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
     * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
     * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
     * @return The requestResource.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.GroupVersionResource getRequestResource() {
      return requestResource_ == null ? io.kubernetes.client.proto.Meta.GroupVersionResource.getDefaultInstance() : requestResource_;
    }
    /**
     * <pre>
     * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
     * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
     *
     * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
     * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
     * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
     * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
     * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
     *
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder getRequestResourceOrBuilder() {
      return requestResource_ == null ? io.kubernetes.client.proto.Meta.GroupVersionResource.getDefaultInstance() : requestResource_;
    }

    public static final int REQUESTSUBRESOURCE_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private volatile java.lang.Object requestSubResource_ = "";
    /**
     * <pre>
     * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
     * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional string requestSubResource = 15;</code>
     * @return Whether the requestSubResource field is set.
     */
    @java.lang.Override
    public boolean hasRequestSubResource() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
     * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional string requestSubResource = 15;</code>
     * @return The requestSubResource.
     */
    @java.lang.Override
    public java.lang.String getRequestSubResource() {
      java.lang.Object ref = requestSubResource_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          requestSubResource_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
     * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
     * See documentation for the "matchPolicy" field in the webhook configuration type.
     * +optional
     * </pre>
     *
     * <code>optional string requestSubResource = 15;</code>
     * @return The bytes for requestSubResource.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequestSubResourceBytes() {
      java.lang.Object ref = requestSubResource_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requestSubResource_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
     * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
     * +optional
     * </pre>
     *
     * <code>optional string name = 5;</code>
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
     * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
     * +optional
     * </pre>
     *
     * <code>optional string name = 5;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
     * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
     * +optional
     * </pre>
     *
     * <code>optional string name = 5;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAMESPACE_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object namespace_ = "";
    /**
     * <pre>
     * Namespace is the namespace associated with the request (if any).
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 6;</code>
     * @return Whether the namespace field is set.
     */
    @java.lang.Override
    public boolean hasNamespace() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * Namespace is the namespace associated with the request (if any).
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 6;</code>
     * @return The namespace.
     */
    @java.lang.Override
    public java.lang.String getNamespace() {
      java.lang.Object ref = namespace_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          namespace_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Namespace is the namespace associated with the request (if any).
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 6;</code>
     * @return The bytes for namespace.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNamespaceBytes() {
      java.lang.Object ref = namespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        namespace_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPERATION_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object operation_ = "";
    /**
     * <pre>
     * Operation is the operation being performed. This may be different than the operation
     * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
     * </pre>
     *
     * <code>optional string operation = 7;</code>
     * @return Whether the operation field is set.
     */
    @java.lang.Override
    public boolean hasOperation() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * Operation is the operation being performed. This may be different than the operation
     * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
     * </pre>
     *
     * <code>optional string operation = 7;</code>
     * @return The operation.
     */
    @java.lang.Override
    public java.lang.String getOperation() {
      java.lang.Object ref = operation_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          operation_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Operation is the operation being performed. This may be different than the operation
     * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
     * </pre>
     *
     * <code>optional string operation = 7;</code>
     * @return The bytes for operation.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOperationBytes() {
      java.lang.Object ref = operation_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        operation_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int USERINFO_FIELD_NUMBER = 8;
    private io.kubernetes.client.proto.V1Authentication.UserInfo userInfo_;
    /**
     * <pre>
     * UserInfo is information about the requesting user
     * </pre>
     *
     * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
     * @return Whether the userInfo field is set.
     */
    @java.lang.Override
    public boolean hasUserInfo() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * UserInfo is information about the requesting user
     * </pre>
     *
     * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
     * @return The userInfo.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1Authentication.UserInfo getUserInfo() {
      return userInfo_ == null ? io.kubernetes.client.proto.V1Authentication.UserInfo.getDefaultInstance() : userInfo_;
    }
    /**
     * <pre>
     * UserInfo is information about the requesting user
     * </pre>
     *
     * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1Authentication.UserInfoOrBuilder getUserInfoOrBuilder() {
      return userInfo_ == null ? io.kubernetes.client.proto.V1Authentication.UserInfo.getDefaultInstance() : userInfo_;
    }

    public static final int OBJECT_FIELD_NUMBER = 9;
    private io.kubernetes.client.proto.Runtime.RawExtension object_;
    /**
     * <pre>
     * Object is the object from the incoming request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
     * @return Whether the object field is set.
     */
    @java.lang.Override
    public boolean hasObject() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * Object is the object from the incoming request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
     * @return The object.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtension getObject() {
      return object_ == null ? io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : object_;
    }
    /**
     * <pre>
     * Object is the object from the incoming request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getObjectOrBuilder() {
      return object_ == null ? io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : object_;
    }

    public static final int OLDOBJECT_FIELD_NUMBER = 10;
    private io.kubernetes.client.proto.Runtime.RawExtension oldObject_;
    /**
     * <pre>
     * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
     * @return Whether the oldObject field is set.
     */
    @java.lang.Override
    public boolean hasOldObject() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <pre>
     * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
     * @return The oldObject.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtension getOldObject() {
      return oldObject_ == null ? io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : oldObject_;
    }
    /**
     * <pre>
     * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getOldObjectOrBuilder() {
      return oldObject_ == null ? io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : oldObject_;
    }

    public static final int DRYRUN_FIELD_NUMBER = 11;
    private boolean dryRun_ = false;
    /**
     * <pre>
     * DryRun indicates that modifications will definitely not be persisted for this request.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool dryRun = 11;</code>
     * @return Whether the dryRun field is set.
     */
    @java.lang.Override
    public boolean hasDryRun() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     * DryRun indicates that modifications will definitely not be persisted for this request.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool dryRun = 11;</code>
     * @return The dryRun.
     */
    @java.lang.Override
    public boolean getDryRun() {
      return dryRun_;
    }

    public static final int OPTIONS_FIELD_NUMBER = 12;
    private io.kubernetes.client.proto.Runtime.RawExtension options_;
    /**
     * <pre>
     * Options is the operation option structure of the operation being performed.
     * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
     * different than the options the caller provided. e.g. for a patch request the performed
     * Operation might be a CREATE, in which case the Options will a
     * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
     * @return Whether the options field is set.
     */
    @java.lang.Override
    public boolean hasOptions() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <pre>
     * Options is the operation option structure of the operation being performed.
     * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
     * different than the options the caller provided. e.g. for a patch request the performed
     * Operation might be a CREATE, in which case the Options will a
     * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
     * @return The options.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtension getOptions() {
      return options_ == null ? io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : options_;
    }
    /**
     * <pre>
     * Options is the operation option structure of the operation being performed.
     * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
     * different than the options the caller provided. e.g. for a patch request the performed
     * Operation might be a CREATE, in which case the Options will a
     * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getOptionsOrBuilder() {
      return options_ == null ? io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : options_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, uid_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getKind());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getResource());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, subResource_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, name_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, namespace_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, operation_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeMessage(8, getUserInfo());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeMessage(9, getObject());
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeMessage(10, getOldObject());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeBool(11, dryRun_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        output.writeMessage(12, getOptions());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(13, getRequestKind());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(14, getRequestResource());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 15, requestSubResource_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, uid_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getKind());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getResource());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, subResource_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, name_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, namespace_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, operation_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getUserInfo());
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getObject());
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getOldObject());
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, dryRun_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getOptions());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, getRequestKind());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, getRequestResource());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(15, requestSubResource_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasUid() != other.hasUid()) return false;
      if (hasUid()) {
        if (!getUid()
            .equals(other.getUid())) return false;
      }
      if (hasKind() != other.hasKind()) return false;
      if (hasKind()) {
        if (!getKind()
            .equals(other.getKind())) return false;
      }
      if (hasResource() != other.hasResource()) return false;
      if (hasResource()) {
        if (!getResource()
            .equals(other.getResource())) return false;
      }
      if (hasSubResource() != other.hasSubResource()) return false;
      if (hasSubResource()) {
        if (!getSubResource()
            .equals(other.getSubResource())) return false;
      }
      if (hasRequestKind() != other.hasRequestKind()) return false;
      if (hasRequestKind()) {
        if (!getRequestKind()
            .equals(other.getRequestKind())) return false;
      }
      if (hasRequestResource() != other.hasRequestResource()) return false;
      if (hasRequestResource()) {
        if (!getRequestResource()
            .equals(other.getRequestResource())) return false;
      }
      if (hasRequestSubResource() != other.hasRequestSubResource()) return false;
      if (hasRequestSubResource()) {
        if (!getRequestSubResource()
            .equals(other.getRequestSubResource())) return false;
      }
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasNamespace() != other.hasNamespace()) return false;
      if (hasNamespace()) {
        if (!getNamespace()
            .equals(other.getNamespace())) return false;
      }
      if (hasOperation() != other.hasOperation()) return false;
      if (hasOperation()) {
        if (!getOperation()
            .equals(other.getOperation())) return false;
      }
      if (hasUserInfo() != other.hasUserInfo()) return false;
      if (hasUserInfo()) {
        if (!getUserInfo()
            .equals(other.getUserInfo())) return false;
      }
      if (hasObject() != other.hasObject()) return false;
      if (hasObject()) {
        if (!getObject()
            .equals(other.getObject())) return false;
      }
      if (hasOldObject() != other.hasOldObject()) return false;
      if (hasOldObject()) {
        if (!getOldObject()
            .equals(other.getOldObject())) return false;
      }
      if (hasDryRun() != other.hasDryRun()) return false;
      if (hasDryRun()) {
        if (getDryRun()
            != other.getDryRun()) return false;
      }
      if (hasOptions() != other.hasOptions()) return false;
      if (hasOptions()) {
        if (!getOptions()
            .equals(other.getOptions())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUid()) {
        hash = (37 * hash) + UID_FIELD_NUMBER;
        hash = (53 * hash) + getUid().hashCode();
      }
      if (hasKind()) {
        hash = (37 * hash) + KIND_FIELD_NUMBER;
        hash = (53 * hash) + getKind().hashCode();
      }
      if (hasResource()) {
        hash = (37 * hash) + RESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getResource().hashCode();
      }
      if (hasSubResource()) {
        hash = (37 * hash) + SUBRESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getSubResource().hashCode();
      }
      if (hasRequestKind()) {
        hash = (37 * hash) + REQUESTKIND_FIELD_NUMBER;
        hash = (53 * hash) + getRequestKind().hashCode();
      }
      if (hasRequestResource()) {
        hash = (37 * hash) + REQUESTRESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getRequestResource().hashCode();
      }
      if (hasRequestSubResource()) {
        hash = (37 * hash) + REQUESTSUBRESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getRequestSubResource().hashCode();
      }
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasNamespace()) {
        hash = (37 * hash) + NAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getNamespace().hashCode();
      }
      if (hasOperation()) {
        hash = (37 * hash) + OPERATION_FIELD_NUMBER;
        hash = (53 * hash) + getOperation().hashCode();
      }
      if (hasUserInfo()) {
        hash = (37 * hash) + USERINFO_FIELD_NUMBER;
        hash = (53 * hash) + getUserInfo().hashCode();
      }
      if (hasObject()) {
        hash = (37 * hash) + OBJECT_FIELD_NUMBER;
        hash = (53 * hash) + getObject().hashCode();
      }
      if (hasOldObject()) {
        hash = (37 * hash) + OLDOBJECT_FIELD_NUMBER;
        hash = (53 * hash) + getOldObject().hashCode();
      }
      if (hasDryRun()) {
        hash = (37 * hash) + DRYRUN_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getDryRun());
      }
      if (hasOptions()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptions().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

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

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * AdmissionRequest describes the admission.Attributes for the admission request.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.admission.v1beta1.AdmissionRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.admission.v1beta1.AdmissionRequest)
        io.kubernetes.client.proto.V1beta1Admission.AdmissionRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Admission.internal_static_k8s_io_api_admission_v1beta1_AdmissionRequest_descriptor;
      }

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

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getKindFieldBuilder();
          getResourceFieldBuilder();
          getRequestKindFieldBuilder();
          getRequestResourceFieldBuilder();
          getUserInfoFieldBuilder();
          getObjectFieldBuilder();
          getOldObjectFieldBuilder();
          getOptionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        uid_ = "";
        kind_ = null;
        if (kindBuilder_ != null) {
          kindBuilder_.dispose();
          kindBuilder_ = null;
        }
        resource_ = null;
        if (resourceBuilder_ != null) {
          resourceBuilder_.dispose();
          resourceBuilder_ = null;
        }
        subResource_ = "";
        requestKind_ = null;
        if (requestKindBuilder_ != null) {
          requestKindBuilder_.dispose();
          requestKindBuilder_ = null;
        }
        requestResource_ = null;
        if (requestResourceBuilder_ != null) {
          requestResourceBuilder_.dispose();
          requestResourceBuilder_ = null;
        }
        requestSubResource_ = "";
        name_ = "";
        namespace_ = "";
        operation_ = "";
        userInfo_ = null;
        if (userInfoBuilder_ != null) {
          userInfoBuilder_.dispose();
          userInfoBuilder_ = null;
        }
        object_ = null;
        if (objectBuilder_ != null) {
          objectBuilder_.dispose();
          objectBuilder_ = null;
        }
        oldObject_ = null;
        if (oldObjectBuilder_ != null) {
          oldObjectBuilder_.dispose();
          oldObjectBuilder_ = null;
        }
        dryRun_ = false;
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.uid_ = uid_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.kind_ = kindBuilder_ == null
              ? kind_
              : kindBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.resource_ = resourceBuilder_ == null
              ? resource_
              : resourceBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.subResource_ = subResource_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.requestKind_ = requestKindBuilder_ == null
              ? requestKind_
              : requestKindBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.requestResource_ = requestResourceBuilder_ == null
              ? requestResource_
              : requestResourceBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.requestSubResource_ = requestSubResource_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.namespace_ = namespace_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.operation_ = operation_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.userInfo_ = userInfoBuilder_ == null
              ? userInfo_
              : userInfoBuilder_.build();
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.object_ = objectBuilder_ == null
              ? object_
              : objectBuilder_.build();
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.oldObject_ = oldObjectBuilder_ == null
              ? oldObject_
              : oldObjectBuilder_.build();
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.dryRun_ = dryRun_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.options_ = optionsBuilder_ == null
              ? options_
              : optionsBuilder_.build();
          to_bitField0_ |= 0x00004000;
        }
        result.bitField0_ |= to_bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest other) {
        if (other == io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest.getDefaultInstance()) return this;
        if (other.hasUid()) {
          uid_ = other.uid_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasKind()) {
          mergeKind(other.getKind());
        }
        if (other.hasResource()) {
          mergeResource(other.getResource());
        }
        if (other.hasSubResource()) {
          subResource_ = other.subResource_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasRequestKind()) {
          mergeRequestKind(other.getRequestKind());
        }
        if (other.hasRequestResource()) {
          mergeRequestResource(other.getRequestResource());
        }
        if (other.hasRequestSubResource()) {
          requestSubResource_ = other.requestSubResource_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (other.hasNamespace()) {
          namespace_ = other.namespace_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        if (other.hasOperation()) {
          operation_ = other.operation_;
          bitField0_ |= 0x00000200;
          onChanged();
        }
        if (other.hasUserInfo()) {
          mergeUserInfo(other.getUserInfo());
        }
        if (other.hasObject()) {
          mergeObject(other.getObject());
        }
        if (other.hasOldObject()) {
          mergeOldObject(other.getOldObject());
        }
        if (other.hasDryRun()) {
          setDryRun(other.getDryRun());
        }
        if (other.hasOptions()) {
          mergeOptions(other.getOptions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                uid_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getKindFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getResourceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                subResource_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 42
              case 50: {
                namespace_ = input.readBytes();
                bitField0_ |= 0x00000100;
                break;
              } // case 50
              case 58: {
                operation_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getUserInfoFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getObjectFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getOldObjectFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00001000;
                break;
              } // case 82
              case 88: {
                dryRun_ = input.readBool();
                bitField0_ |= 0x00002000;
                break;
              } // case 88
              case 98: {
                input.readMessage(
                    getOptionsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00004000;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getRequestKindFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 106
              case 114: {
                input.readMessage(
                    getRequestResourceFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 114
              case 122: {
                requestSubResource_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 122
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

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

      private io.kubernetes.client.proto.Meta.GroupVersionKind kind_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.GroupVersionKind, io.kubernetes.client.proto.Meta.GroupVersionKind.Builder, io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder> kindBuilder_;
      /**
       * <pre>
       * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
       * @return Whether the kind field is set.
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
       * @return The kind.
       */
      public io.kubernetes.client.proto.Meta.GroupVersionKind getKind() {
        if (kindBuilder_ == null) {
          return kind_ == null ? io.kubernetes.client.proto.Meta.GroupVersionKind.getDefaultInstance() : kind_;
        } else {
          return kindBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
       */
      public Builder setKind(io.kubernetes.client.proto.Meta.GroupVersionKind value) {
        if (kindBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          kind_ = value;
        } else {
          kindBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
       */
      public Builder setKind(
          io.kubernetes.client.proto.Meta.GroupVersionKind.Builder builderForValue) {
        if (kindBuilder_ == null) {
          kind_ = builderForValue.build();
        } else {
          kindBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
       */
      public Builder mergeKind(io.kubernetes.client.proto.Meta.GroupVersionKind value) {
        if (kindBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            kind_ != null &&
            kind_ != io.kubernetes.client.proto.Meta.GroupVersionKind.getDefaultInstance()) {
            getKindBuilder().mergeFrom(value);
          } else {
            kind_ = value;
          }
        } else {
          kindBuilder_.mergeFrom(value);
        }
        if (kind_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
       */
      public Builder clearKind() {
        bitField0_ = (bitField0_ & ~0x00000002);
        kind_ = null;
        if (kindBuilder_ != null) {
          kindBuilder_.dispose();
          kindBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.GroupVersionKind.Builder getKindBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getKindFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
       */
      public io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder getKindOrBuilder() {
        if (kindBuilder_ != null) {
          return kindBuilder_.getMessageOrBuilder();
        } else {
          return kind_ == null ?
              io.kubernetes.client.proto.Meta.GroupVersionKind.getDefaultInstance() : kind_;
        }
      }
      /**
       * <pre>
       * Kind is the fully-qualified type of object being submitted (for example, v1.Pod or autoscaling.v1.Scale)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind kind = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.GroupVersionKind, io.kubernetes.client.proto.Meta.GroupVersionKind.Builder, io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder> 
          getKindFieldBuilder() {
        if (kindBuilder_ == null) {
          kindBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.GroupVersionKind, io.kubernetes.client.proto.Meta.GroupVersionKind.Builder, io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder>(
                  getKind(),
                  getParentForChildren(),
                  isClean());
          kind_ = null;
        }
        return kindBuilder_;
      }

      private io.kubernetes.client.proto.Meta.GroupVersionResource resource_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.GroupVersionResource, io.kubernetes.client.proto.Meta.GroupVersionResource.Builder, io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder> resourceBuilder_;
      /**
       * <pre>
       * Resource is the fully-qualified resource being requested (for example, v1.pods)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
       * @return Whether the resource field is set.
       */
      public boolean hasResource() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Resource is the fully-qualified resource being requested (for example, v1.pods)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
       * @return The resource.
       */
      public io.kubernetes.client.proto.Meta.GroupVersionResource getResource() {
        if (resourceBuilder_ == null) {
          return resource_ == null ? io.kubernetes.client.proto.Meta.GroupVersionResource.getDefaultInstance() : resource_;
        } else {
          return resourceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Resource is the fully-qualified resource being requested (for example, v1.pods)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
       */
      public Builder setResource(io.kubernetes.client.proto.Meta.GroupVersionResource value) {
        if (resourceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          resource_ = value;
        } else {
          resourceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resource is the fully-qualified resource being requested (for example, v1.pods)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
       */
      public Builder setResource(
          io.kubernetes.client.proto.Meta.GroupVersionResource.Builder builderForValue) {
        if (resourceBuilder_ == null) {
          resource_ = builderForValue.build();
        } else {
          resourceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resource is the fully-qualified resource being requested (for example, v1.pods)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
       */
      public Builder mergeResource(io.kubernetes.client.proto.Meta.GroupVersionResource value) {
        if (resourceBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            resource_ != null &&
            resource_ != io.kubernetes.client.proto.Meta.GroupVersionResource.getDefaultInstance()) {
            getResourceBuilder().mergeFrom(value);
          } else {
            resource_ = value;
          }
        } else {
          resourceBuilder_.mergeFrom(value);
        }
        if (resource_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Resource is the fully-qualified resource being requested (for example, v1.pods)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
       */
      public Builder clearResource() {
        bitField0_ = (bitField0_ & ~0x00000004);
        resource_ = null;
        if (resourceBuilder_ != null) {
          resourceBuilder_.dispose();
          resourceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resource is the fully-qualified resource being requested (for example, v1.pods)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.GroupVersionResource.Builder getResourceBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getResourceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Resource is the fully-qualified resource being requested (for example, v1.pods)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder getResourceOrBuilder() {
        if (resourceBuilder_ != null) {
          return resourceBuilder_.getMessageOrBuilder();
        } else {
          return resource_ == null ?
              io.kubernetes.client.proto.Meta.GroupVersionResource.getDefaultInstance() : resource_;
        }
      }
      /**
       * <pre>
       * Resource is the fully-qualified resource being requested (for example, v1.pods)
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource resource = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.GroupVersionResource, io.kubernetes.client.proto.Meta.GroupVersionResource.Builder, io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder> 
          getResourceFieldBuilder() {
        if (resourceBuilder_ == null) {
          resourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.GroupVersionResource, io.kubernetes.client.proto.Meta.GroupVersionResource.Builder, io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder>(
                  getResource(),
                  getParentForChildren(),
                  isClean());
          resource_ = null;
        }
        return resourceBuilder_;
      }

      private java.lang.Object subResource_ = "";
      /**
       * <pre>
       * SubResource is the subresource being requested, if any (for example, "status" or "scale")
       * +optional
       * </pre>
       *
       * <code>optional string subResource = 4;</code>
       * @return Whether the subResource field is set.
       */
      public boolean hasSubResource() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * SubResource is the subresource being requested, if any (for example, "status" or "scale")
       * +optional
       * </pre>
       *
       * <code>optional string subResource = 4;</code>
       * @return The subResource.
       */
      public java.lang.String getSubResource() {
        java.lang.Object ref = subResource_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            subResource_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * SubResource is the subresource being requested, if any (for example, "status" or "scale")
       * +optional
       * </pre>
       *
       * <code>optional string subResource = 4;</code>
       * @return The bytes for subResource.
       */
      public com.google.protobuf.ByteString
          getSubResourceBytes() {
        java.lang.Object ref = subResource_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          subResource_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * SubResource is the subresource being requested, if any (for example, "status" or "scale")
       * +optional
       * </pre>
       *
       * <code>optional string subResource = 4;</code>
       * @param value The subResource to set.
       * @return This builder for chaining.
       */
      public Builder setSubResource(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        subResource_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SubResource is the subresource being requested, if any (for example, "status" or "scale")
       * +optional
       * </pre>
       *
       * <code>optional string subResource = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubResource() {
        subResource_ = getDefaultInstance().getSubResource();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * SubResource is the subresource being requested, if any (for example, "status" or "scale")
       * +optional
       * </pre>
       *
       * <code>optional string subResource = 4;</code>
       * @param value The bytes for subResource to set.
       * @return This builder for chaining.
       */
      public Builder setSubResourceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        subResource_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.GroupVersionKind requestKind_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.GroupVersionKind, io.kubernetes.client.proto.Meta.GroupVersionKind.Builder, io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder> requestKindBuilder_;
      /**
       * <pre>
       * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
       * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
       * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
       * @return Whether the requestKind field is set.
       */
      public boolean hasRequestKind() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
       * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
       * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
       * @return The requestKind.
       */
      public io.kubernetes.client.proto.Meta.GroupVersionKind getRequestKind() {
        if (requestKindBuilder_ == null) {
          return requestKind_ == null ? io.kubernetes.client.proto.Meta.GroupVersionKind.getDefaultInstance() : requestKind_;
        } else {
          return requestKindBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
       * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
       * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
       */
      public Builder setRequestKind(io.kubernetes.client.proto.Meta.GroupVersionKind value) {
        if (requestKindBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          requestKind_ = value;
        } else {
          requestKindBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
       * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
       * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
       */
      public Builder setRequestKind(
          io.kubernetes.client.proto.Meta.GroupVersionKind.Builder builderForValue) {
        if (requestKindBuilder_ == null) {
          requestKind_ = builderForValue.build();
        } else {
          requestKindBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
       * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
       * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
       */
      public Builder mergeRequestKind(io.kubernetes.client.proto.Meta.GroupVersionKind value) {
        if (requestKindBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            requestKind_ != null &&
            requestKind_ != io.kubernetes.client.proto.Meta.GroupVersionKind.getDefaultInstance()) {
            getRequestKindBuilder().mergeFrom(value);
          } else {
            requestKind_ = value;
          }
        } else {
          requestKindBuilder_.mergeFrom(value);
        }
        if (requestKind_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
       * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
       * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
       */
      public Builder clearRequestKind() {
        bitField0_ = (bitField0_ & ~0x00000010);
        requestKind_ = null;
        if (requestKindBuilder_ != null) {
          requestKindBuilder_.dispose();
          requestKindBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
       * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
       * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
       */
      public io.kubernetes.client.proto.Meta.GroupVersionKind.Builder getRequestKindBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getRequestKindFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
       * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
       * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
       */
      public io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder getRequestKindOrBuilder() {
        if (requestKindBuilder_ != null) {
          return requestKindBuilder_.getMessageOrBuilder();
        } else {
          return requestKind_ == null ?
              io.kubernetes.client.proto.Meta.GroupVersionKind.getDefaultInstance() : requestKind_;
        }
      }
      /**
       * <pre>
       * RequestKind is the fully-qualified type of the original API request (for example, v1.Pod or autoscaling.v1.Scale).
       * If this is specified and differs from the value in "kind", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `kind: {group:"apps", version:"v1", kind:"Deployment"}` (matching the rule the webhook registered for),
       * and `requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"}` (indicating the kind of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type for more details.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind requestKind = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.GroupVersionKind, io.kubernetes.client.proto.Meta.GroupVersionKind.Builder, io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder> 
          getRequestKindFieldBuilder() {
        if (requestKindBuilder_ == null) {
          requestKindBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.GroupVersionKind, io.kubernetes.client.proto.Meta.GroupVersionKind.Builder, io.kubernetes.client.proto.Meta.GroupVersionKindOrBuilder>(
                  getRequestKind(),
                  getParentForChildren(),
                  isClean());
          requestKind_ = null;
        }
        return requestKindBuilder_;
      }

      private io.kubernetes.client.proto.Meta.GroupVersionResource requestResource_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.GroupVersionResource, io.kubernetes.client.proto.Meta.GroupVersionResource.Builder, io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder> requestResourceBuilder_;
      /**
       * <pre>
       * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
       * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
       * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
       * @return Whether the requestResource field is set.
       */
      public boolean hasRequestResource() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
       * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
       * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
       * @return The requestResource.
       */
      public io.kubernetes.client.proto.Meta.GroupVersionResource getRequestResource() {
        if (requestResourceBuilder_ == null) {
          return requestResource_ == null ? io.kubernetes.client.proto.Meta.GroupVersionResource.getDefaultInstance() : requestResource_;
        } else {
          return requestResourceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
       * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
       * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
       */
      public Builder setRequestResource(io.kubernetes.client.proto.Meta.GroupVersionResource value) {
        if (requestResourceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          requestResource_ = value;
        } else {
          requestResourceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
       * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
       * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
       */
      public Builder setRequestResource(
          io.kubernetes.client.proto.Meta.GroupVersionResource.Builder builderForValue) {
        if (requestResourceBuilder_ == null) {
          requestResource_ = builderForValue.build();
        } else {
          requestResourceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
       * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
       * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
       */
      public Builder mergeRequestResource(io.kubernetes.client.proto.Meta.GroupVersionResource value) {
        if (requestResourceBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            requestResource_ != null &&
            requestResource_ != io.kubernetes.client.proto.Meta.GroupVersionResource.getDefaultInstance()) {
            getRequestResourceBuilder().mergeFrom(value);
          } else {
            requestResource_ = value;
          }
        } else {
          requestResourceBuilder_.mergeFrom(value);
        }
        if (requestResource_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
       * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
       * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
       */
      public Builder clearRequestResource() {
        bitField0_ = (bitField0_ & ~0x00000020);
        requestResource_ = null;
        if (requestResourceBuilder_ != null) {
          requestResourceBuilder_.dispose();
          requestResourceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
       * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
       * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
       */
      public io.kubernetes.client.proto.Meta.GroupVersionResource.Builder getRequestResourceBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getRequestResourceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
       * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
       * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
       */
      public io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder getRequestResourceOrBuilder() {
        if (requestResourceBuilder_ != null) {
          return requestResourceBuilder_.getMessageOrBuilder();
        } else {
          return requestResource_ == null ?
              io.kubernetes.client.proto.Meta.GroupVersionResource.getDefaultInstance() : requestResource_;
        }
      }
      /**
       * <pre>
       * RequestResource is the fully-qualified resource of the original API request (for example, v1.pods).
       * If this is specified and differs from the value in "resource", an equivalent match and conversion was performed.
       *
       * For example, if deployments can be modified via apps/v1 and apps/v1beta1, and a webhook registered a rule of
       * `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]` and `matchPolicy: Equivalent`,
       * an API request to apps/v1beta1 deployments would be converted and sent to the webhook
       * with `resource: {group:"apps", version:"v1", resource:"deployments"}` (matching the resource the webhook registered for),
       * and `requestResource: {group:"apps", version:"v1beta1", resource:"deployments"}` (indicating the resource of the original API request).
       *
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource requestResource = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.GroupVersionResource, io.kubernetes.client.proto.Meta.GroupVersionResource.Builder, io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder> 
          getRequestResourceFieldBuilder() {
        if (requestResourceBuilder_ == null) {
          requestResourceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.GroupVersionResource, io.kubernetes.client.proto.Meta.GroupVersionResource.Builder, io.kubernetes.client.proto.Meta.GroupVersionResourceOrBuilder>(
                  getRequestResource(),
                  getParentForChildren(),
                  isClean());
          requestResource_ = null;
        }
        return requestResourceBuilder_;
      }

      private java.lang.Object requestSubResource_ = "";
      /**
       * <pre>
       * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
       * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional string requestSubResource = 15;</code>
       * @return Whether the requestSubResource field is set.
       */
      public boolean hasRequestSubResource() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
       * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional string requestSubResource = 15;</code>
       * @return The requestSubResource.
       */
      public java.lang.String getRequestSubResource() {
        java.lang.Object ref = requestSubResource_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            requestSubResource_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
       * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional string requestSubResource = 15;</code>
       * @return The bytes for requestSubResource.
       */
      public com.google.protobuf.ByteString
          getRequestSubResourceBytes() {
        java.lang.Object ref = requestSubResource_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requestSubResource_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
       * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional string requestSubResource = 15;</code>
       * @param value The requestSubResource to set.
       * @return This builder for chaining.
       */
      public Builder setRequestSubResource(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        requestSubResource_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
       * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional string requestSubResource = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequestSubResource() {
        requestSubResource_ = getDefaultInstance().getRequestSubResource();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * RequestSubResource is the name of the subresource of the original API request, if any (for example, "status" or "scale")
       * If this is specified and differs from the value in "subResource", an equivalent match and conversion was performed.
       * See documentation for the "matchPolicy" field in the webhook configuration type.
       * +optional
       * </pre>
       *
       * <code>optional string requestSubResource = 15;</code>
       * @param value The bytes for requestSubResource to set.
       * @return This builder for chaining.
       */
      public Builder setRequestSubResourceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        requestSubResource_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
       * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
       * +optional
       * </pre>
       *
       * <code>optional string name = 5;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
       * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
       * +optional
       * </pre>
       *
       * <code>optional string name = 5;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
       * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
       * +optional
       * </pre>
       *
       * <code>optional string name = 5;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
       * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
       * +optional
       * </pre>
       *
       * <code>optional string name = 5;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
       * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
       * +optional
       * </pre>
       *
       * <code>optional string name = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name is the name of the object as presented in the request.  On a CREATE operation, the client may omit name and
       * rely on the server to generate the name.  If that is the case, this field will contain an empty string.
       * +optional
       * </pre>
       *
       * <code>optional string name = 5;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private java.lang.Object namespace_ = "";
      /**
       * <pre>
       * Namespace is the namespace associated with the request (if any).
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 6;</code>
       * @return Whether the namespace field is set.
       */
      public boolean hasNamespace() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * Namespace is the namespace associated with the request (if any).
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 6;</code>
       * @return The namespace.
       */
      public java.lang.String getNamespace() {
        java.lang.Object ref = namespace_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            namespace_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Namespace is the namespace associated with the request (if any).
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 6;</code>
       * @return The bytes for namespace.
       */
      public com.google.protobuf.ByteString
          getNamespaceBytes() {
        java.lang.Object ref = namespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          namespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Namespace is the namespace associated with the request (if any).
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 6;</code>
       * @param value The namespace to set.
       * @return This builder for chaining.
       */
      public Builder setNamespace(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        namespace_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Namespace is the namespace associated with the request (if any).
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearNamespace() {
        namespace_ = getDefaultInstance().getNamespace();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Namespace is the namespace associated with the request (if any).
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 6;</code>
       * @param value The bytes for namespace to set.
       * @return This builder for chaining.
       */
      public Builder setNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        namespace_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      private java.lang.Object operation_ = "";
      /**
       * <pre>
       * Operation is the operation being performed. This may be different than the operation
       * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
       * </pre>
       *
       * <code>optional string operation = 7;</code>
       * @return Whether the operation field is set.
       */
      public boolean hasOperation() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * Operation is the operation being performed. This may be different than the operation
       * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
       * </pre>
       *
       * <code>optional string operation = 7;</code>
       * @return The operation.
       */
      public java.lang.String getOperation() {
        java.lang.Object ref = operation_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            operation_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Operation is the operation being performed. This may be different than the operation
       * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
       * </pre>
       *
       * <code>optional string operation = 7;</code>
       * @return The bytes for operation.
       */
      public com.google.protobuf.ByteString
          getOperationBytes() {
        java.lang.Object ref = operation_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          operation_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Operation is the operation being performed. This may be different than the operation
       * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
       * </pre>
       *
       * <code>optional string operation = 7;</code>
       * @param value The operation to set.
       * @return This builder for chaining.
       */
      public Builder setOperation(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        operation_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operation is the operation being performed. This may be different than the operation
       * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
       * </pre>
       *
       * <code>optional string operation = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearOperation() {
        operation_ = getDefaultInstance().getOperation();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operation is the operation being performed. This may be different than the operation
       * requested. e.g. a patch can result in either a CREATE or UPDATE Operation.
       * </pre>
       *
       * <code>optional string operation = 7;</code>
       * @param value The bytes for operation to set.
       * @return This builder for chaining.
       */
      public Builder setOperationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        operation_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1Authentication.UserInfo userInfo_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1Authentication.UserInfo, io.kubernetes.client.proto.V1Authentication.UserInfo.Builder, io.kubernetes.client.proto.V1Authentication.UserInfoOrBuilder> userInfoBuilder_;
      /**
       * <pre>
       * UserInfo is information about the requesting user
       * </pre>
       *
       * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
       * @return Whether the userInfo field is set.
       */
      public boolean hasUserInfo() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * UserInfo is information about the requesting user
       * </pre>
       *
       * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
       * @return The userInfo.
       */
      public io.kubernetes.client.proto.V1Authentication.UserInfo getUserInfo() {
        if (userInfoBuilder_ == null) {
          return userInfo_ == null ? io.kubernetes.client.proto.V1Authentication.UserInfo.getDefaultInstance() : userInfo_;
        } else {
          return userInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * UserInfo is information about the requesting user
       * </pre>
       *
       * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
       */
      public Builder setUserInfo(io.kubernetes.client.proto.V1Authentication.UserInfo value) {
        if (userInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userInfo_ = value;
        } else {
          userInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UserInfo is information about the requesting user
       * </pre>
       *
       * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
       */
      public Builder setUserInfo(
          io.kubernetes.client.proto.V1Authentication.UserInfo.Builder builderForValue) {
        if (userInfoBuilder_ == null) {
          userInfo_ = builderForValue.build();
        } else {
          userInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UserInfo is information about the requesting user
       * </pre>
       *
       * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
       */
      public Builder mergeUserInfo(io.kubernetes.client.proto.V1Authentication.UserInfo value) {
        if (userInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            userInfo_ != null &&
            userInfo_ != io.kubernetes.client.proto.V1Authentication.UserInfo.getDefaultInstance()) {
            getUserInfoBuilder().mergeFrom(value);
          } else {
            userInfo_ = value;
          }
        } else {
          userInfoBuilder_.mergeFrom(value);
        }
        if (userInfo_ != null) {
          bitField0_ |= 0x00000400;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * UserInfo is information about the requesting user
       * </pre>
       *
       * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
       */
      public Builder clearUserInfo() {
        bitField0_ = (bitField0_ & ~0x00000400);
        userInfo_ = null;
        if (userInfoBuilder_ != null) {
          userInfoBuilder_.dispose();
          userInfoBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UserInfo is information about the requesting user
       * </pre>
       *
       * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
       */
      public io.kubernetes.client.proto.V1Authentication.UserInfo.Builder getUserInfoBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getUserInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * UserInfo is information about the requesting user
       * </pre>
       *
       * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
       */
      public io.kubernetes.client.proto.V1Authentication.UserInfoOrBuilder getUserInfoOrBuilder() {
        if (userInfoBuilder_ != null) {
          return userInfoBuilder_.getMessageOrBuilder();
        } else {
          return userInfo_ == null ?
              io.kubernetes.client.proto.V1Authentication.UserInfo.getDefaultInstance() : userInfo_;
        }
      }
      /**
       * <pre>
       * UserInfo is information about the requesting user
       * </pre>
       *
       * <code>optional .k8s.io.api.authentication.v1.UserInfo userInfo = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1Authentication.UserInfo, io.kubernetes.client.proto.V1Authentication.UserInfo.Builder, io.kubernetes.client.proto.V1Authentication.UserInfoOrBuilder> 
          getUserInfoFieldBuilder() {
        if (userInfoBuilder_ == null) {
          userInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1Authentication.UserInfo, io.kubernetes.client.proto.V1Authentication.UserInfo.Builder, io.kubernetes.client.proto.V1Authentication.UserInfoOrBuilder>(
                  getUserInfo(),
                  getParentForChildren(),
                  isClean());
          userInfo_ = null;
        }
        return userInfoBuilder_;
      }

      private io.kubernetes.client.proto.Runtime.RawExtension object_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> objectBuilder_;
      /**
       * <pre>
       * Object is the object from the incoming request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
       * @return Whether the object field is set.
       */
      public boolean hasObject() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * Object is the object from the incoming request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
       * @return The object.
       */
      public io.kubernetes.client.proto.Runtime.RawExtension getObject() {
        if (objectBuilder_ == null) {
          return object_ == null ? io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : object_;
        } else {
          return objectBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Object is the object from the incoming request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
       */
      public Builder setObject(io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (objectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          object_ = value;
        } else {
          objectBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Object is the object from the incoming request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
       */
      public Builder setObject(
          io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (objectBuilder_ == null) {
          object_ = builderForValue.build();
        } else {
          objectBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Object is the object from the incoming request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
       */
      public Builder mergeObject(io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (objectBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0) &&
            object_ != null &&
            object_ != io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance()) {
            getObjectBuilder().mergeFrom(value);
          } else {
            object_ = value;
          }
        } else {
          objectBuilder_.mergeFrom(value);
        }
        if (object_ != null) {
          bitField0_ |= 0x00000800;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Object is the object from the incoming request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
       */
      public Builder clearObject() {
        bitField0_ = (bitField0_ & ~0x00000800);
        object_ = null;
        if (objectBuilder_ != null) {
          objectBuilder_.dispose();
          objectBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Object is the object from the incoming request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder getObjectBuilder() {
        bitField0_ |= 0x00000800;
        onChanged();
        return getObjectFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Object is the object from the incoming request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getObjectOrBuilder() {
        if (objectBuilder_ != null) {
          return objectBuilder_.getMessageOrBuilder();
        } else {
          return object_ == null ?
              io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : object_;
        }
      }
      /**
       * <pre>
       * Object is the object from the incoming request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension object = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
          getObjectFieldBuilder() {
        if (objectBuilder_ == null) {
          objectBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder>(
                  getObject(),
                  getParentForChildren(),
                  isClean());
          object_ = null;
        }
        return objectBuilder_;
      }

      private io.kubernetes.client.proto.Runtime.RawExtension oldObject_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> oldObjectBuilder_;
      /**
       * <pre>
       * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
       * @return Whether the oldObject field is set.
       */
      public boolean hasOldObject() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
       * @return The oldObject.
       */
      public io.kubernetes.client.proto.Runtime.RawExtension getOldObject() {
        if (oldObjectBuilder_ == null) {
          return oldObject_ == null ? io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : oldObject_;
        } else {
          return oldObjectBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
       */
      public Builder setOldObject(io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (oldObjectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          oldObject_ = value;
        } else {
          oldObjectBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
       */
      public Builder setOldObject(
          io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (oldObjectBuilder_ == null) {
          oldObject_ = builderForValue.build();
        } else {
          oldObjectBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
       */
      public Builder mergeOldObject(io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (oldObjectBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0) &&
            oldObject_ != null &&
            oldObject_ != io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance()) {
            getOldObjectBuilder().mergeFrom(value);
          } else {
            oldObject_ = value;
          }
        } else {
          oldObjectBuilder_.mergeFrom(value);
        }
        if (oldObject_ != null) {
          bitField0_ |= 0x00001000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
       */
      public Builder clearOldObject() {
        bitField0_ = (bitField0_ & ~0x00001000);
        oldObject_ = null;
        if (oldObjectBuilder_ != null) {
          oldObjectBuilder_.dispose();
          oldObjectBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder getOldObjectBuilder() {
        bitField0_ |= 0x00001000;
        onChanged();
        return getOldObjectFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getOldObjectOrBuilder() {
        if (oldObjectBuilder_ != null) {
          return oldObjectBuilder_.getMessageOrBuilder();
        } else {
          return oldObject_ == null ?
              io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : oldObject_;
        }
      }
      /**
       * <pre>
       * OldObject is the existing object. Only populated for DELETE and UPDATE requests.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension oldObject = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
          getOldObjectFieldBuilder() {
        if (oldObjectBuilder_ == null) {
          oldObjectBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder>(
                  getOldObject(),
                  getParentForChildren(),
                  isClean());
          oldObject_ = null;
        }
        return oldObjectBuilder_;
      }

      private boolean dryRun_ ;
      /**
       * <pre>
       * DryRun indicates that modifications will definitely not be persisted for this request.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool dryRun = 11;</code>
       * @return Whether the dryRun field is set.
       */
      @java.lang.Override
      public boolean hasDryRun() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * DryRun indicates that modifications will definitely not be persisted for this request.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool dryRun = 11;</code>
       * @return The dryRun.
       */
      @java.lang.Override
      public boolean getDryRun() {
        return dryRun_;
      }
      /**
       * <pre>
       * DryRun indicates that modifications will definitely not be persisted for this request.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool dryRun = 11;</code>
       * @param value The dryRun to set.
       * @return This builder for chaining.
       */
      public Builder setDryRun(boolean value) {

        dryRun_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * DryRun indicates that modifications will definitely not be persisted for this request.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool dryRun = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearDryRun() {
        bitField0_ = (bitField0_ & ~0x00002000);
        dryRun_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Runtime.RawExtension options_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> optionsBuilder_;
      /**
       * <pre>
       * Options is the operation option structure of the operation being performed.
       * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
       * different than the options the caller provided. e.g. for a patch request the performed
       * Operation might be a CREATE, in which case the Options will a
       * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
       * @return Whether the options field is set.
       */
      public boolean hasOptions() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * Options is the operation option structure of the operation being performed.
       * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
       * different than the options the caller provided. e.g. for a patch request the performed
       * Operation might be a CREATE, in which case the Options will a
       * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
       * @return The options.
       */
      public io.kubernetes.client.proto.Runtime.RawExtension getOptions() {
        if (optionsBuilder_ == null) {
          return options_ == null ? io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : options_;
        } else {
          return optionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Options is the operation option structure of the operation being performed.
       * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
       * different than the options the caller provided. e.g. for a patch request the performed
       * Operation might be a CREATE, in which case the Options will a
       * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
       */
      public Builder setOptions(io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (optionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          options_ = value;
        } else {
          optionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Options is the operation option structure of the operation being performed.
       * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
       * different than the options the caller provided. e.g. for a patch request the performed
       * Operation might be a CREATE, in which case the Options will a
       * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
       */
      public Builder setOptions(
          io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (optionsBuilder_ == null) {
          options_ = builderForValue.build();
        } else {
          optionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Options is the operation option structure of the operation being performed.
       * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
       * different than the options the caller provided. e.g. for a patch request the performed
       * Operation might be a CREATE, in which case the Options will a
       * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
       */
      public Builder mergeOptions(io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (optionsBuilder_ == null) {
          if (((bitField0_ & 0x00004000) != 0) &&
            options_ != null &&
            options_ != io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance()) {
            getOptionsBuilder().mergeFrom(value);
          } else {
            options_ = value;
          }
        } else {
          optionsBuilder_.mergeFrom(value);
        }
        if (options_ != null) {
          bitField0_ |= 0x00004000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Options is the operation option structure of the operation being performed.
       * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
       * different than the options the caller provided. e.g. for a patch request the performed
       * Operation might be a CREATE, in which case the Options will a
       * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
       */
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00004000);
        options_ = null;
        if (optionsBuilder_ != null) {
          optionsBuilder_.dispose();
          optionsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Options is the operation option structure of the operation being performed.
       * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
       * different than the options the caller provided. e.g. for a patch request the performed
       * Operation might be a CREATE, in which case the Options will a
       * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder getOptionsBuilder() {
        bitField0_ |= 0x00004000;
        onChanged();
        return getOptionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Options is the operation option structure of the operation being performed.
       * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
       * different than the options the caller provided. e.g. for a patch request the performed
       * Operation might be a CREATE, in which case the Options will a
       * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getOptionsOrBuilder() {
        if (optionsBuilder_ != null) {
          return optionsBuilder_.getMessageOrBuilder();
        } else {
          return options_ == null ?
              io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance() : options_;
        }
      }
      /**
       * <pre>
       * Options is the operation option structure of the operation being performed.
       * e.g. `meta.k8s.io/v1.DeleteOptions` or `meta.k8s.io/v1.CreateOptions`. This may be
       * different than the options the caller provided. e.g. for a patch request the performed
       * Operation might be a CREATE, in which case the Options will a
       * `meta.k8s.io/v1.CreateOptions` even though the caller provided `meta.k8s.io/v1.PatchOptions`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.runtime.RawExtension options = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
          getOptionsFieldBuilder() {
        if (optionsBuilder_ == null) {
          optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder>(
                  getOptions(),
                  getParentForChildren(),
                  isClean());
          options_ = null;
        }
        return optionsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.admission.v1beta1.AdmissionRequest)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.admission.v1beta1.AdmissionRequest)
    private static final io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest();
    }

    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface AdmissionResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.admission.v1beta1.AdmissionResponse)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <pre>
     * Allowed indicates whether or not the admission request was permitted.
     * </pre>
     *
     * <code>optional bool allowed = 2;</code>
     * @return Whether the allowed field is set.
     */
    boolean hasAllowed();
    /**
     * <pre>
     * Allowed indicates whether or not the admission request was permitted.
     * </pre>
     *
     * <code>optional bool allowed = 2;</code>
     * @return The allowed.
     */
    boolean getAllowed();

    /**
     * <pre>
     * Result contains extra details into why an admission request was denied.
     * This field IS NOT consulted in any way if "Allowed" is "true".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * Result contains extra details into why an admission request was denied.
     * This field IS NOT consulted in any way if "Allowed" is "true".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.Meta.Status getStatus();
    /**
     * <pre>
     * Result contains extra details into why an admission request was denied.
     * This field IS NOT consulted in any way if "Allowed" is "true".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
     */
    io.kubernetes.client.proto.Meta.StatusOrBuilder getStatusOrBuilder();

    /**
     * <pre>
     * The patch body. Currently we only support "JSONPatch" which implements RFC 6902.
     * +optional
     * </pre>
     *
     * <code>optional bytes patch = 4;</code>
     * @return Whether the patch field is set.
     */
    boolean hasPatch();
    /**
     * <pre>
     * The patch body. Currently we only support "JSONPatch" which implements RFC 6902.
     * +optional
     * </pre>
     *
     * <code>optional bytes patch = 4;</code>
     * @return The patch.
     */
    com.google.protobuf.ByteString getPatch();

    /**
     * <pre>
     * The type of Patch. Currently we only allow "JSONPatch".
     * +optional
     * </pre>
     *
     * <code>optional string patchType = 5;</code>
     * @return Whether the patchType field is set.
     */
    boolean hasPatchType();
    /**
     * <pre>
     * The type of Patch. Currently we only allow "JSONPatch".
     * +optional
     * </pre>
     *
     * <code>optional string patchType = 5;</code>
     * @return The patchType.
     */
    java.lang.String getPatchType();
    /**
     * <pre>
     * The type of Patch. Currently we only allow "JSONPatch".
     * +optional
     * </pre>
     *
     * <code>optional string patchType = 5;</code>
     * @return The bytes for patchType.
     */
    com.google.protobuf.ByteString
        getPatchTypeBytes();

    /**
     * <pre>
     * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
     * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
     * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
     * the admission webhook to add additional context to the audit log for this request.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
     */
    int getAuditAnnotationsCount();
    /**
     * <pre>
     * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
     * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
     * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
     * the admission webhook to add additional context to the audit log for this request.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
     */
    boolean containsAuditAnnotations(
        java.lang.String key);
    /**
     * Use {@link #getAuditAnnotationsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getAuditAnnotations();
    /**
     * <pre>
     * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
     * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
     * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
     * the admission webhook to add additional context to the audit log for this request.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getAuditAnnotationsMap();
    /**
     * <pre>
     * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
     * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
     * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
     * the admission webhook to add additional context to the audit log for this request.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
     */
    /* nullable */
java.lang.String getAuditAnnotationsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
     * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
     * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
     * the admission webhook to add additional context to the audit log for this request.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
     */
    java.lang.String getAuditAnnotationsOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * warnings is a list of warning messages to return to the requesting API client.
     * Warning messages describe a problem the client making the API request should correct or be aware of.
     * Limit warnings to 120 characters if possible.
     * Warnings over 256 characters and large numbers of warnings may be truncated.
     * +optional
     * </pre>
     *
     * <code>repeated string warnings = 7;</code>
     * @return A list containing the warnings.
     */
    java.util.List<java.lang.String>
        getWarningsList();
    /**
     * <pre>
     * warnings is a list of warning messages to return to the requesting API client.
     * Warning messages describe a problem the client making the API request should correct or be aware of.
     * Limit warnings to 120 characters if possible.
     * Warnings over 256 characters and large numbers of warnings may be truncated.
     * +optional
     * </pre>
     *
     * <code>repeated string warnings = 7;</code>
     * @return The count of warnings.
     */
    int getWarningsCount();
    /**
     * <pre>
     * warnings is a list of warning messages to return to the requesting API client.
     * Warning messages describe a problem the client making the API request should correct or be aware of.
     * Limit warnings to 120 characters if possible.
     * Warnings over 256 characters and large numbers of warnings may be truncated.
     * +optional
     * </pre>
     *
     * <code>repeated string warnings = 7;</code>
     * @param index The index of the element to return.
     * @return The warnings at the given index.
     */
    java.lang.String getWarnings(int index);
    /**
     * <pre>
     * warnings is a list of warning messages to return to the requesting API client.
     * Warning messages describe a problem the client making the API request should correct or be aware of.
     * Limit warnings to 120 characters if possible.
     * Warnings over 256 characters and large numbers of warnings may be truncated.
     * +optional
     * </pre>
     *
     * <code>repeated string warnings = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the warnings at the given index.
     */
    com.google.protobuf.ByteString
        getWarningsBytes(int index);
  }
  /**
   * <pre>
   * AdmissionResponse describes an admission response.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.admission.v1beta1.AdmissionResponse}
   */
  public static final class AdmissionResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.admission.v1beta1.AdmissionResponse)
      AdmissionResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        AdmissionResponse.class.getName());
    }
    // Use AdmissionResponse.newBuilder() to construct.
    private AdmissionResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AdmissionResponse() {
      uid_ = "";
      patch_ = com.google.protobuf.ByteString.EMPTY;
      patchType_ = "";
      warnings_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

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

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

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

    public static final int ALLOWED_FIELD_NUMBER = 2;
    private boolean allowed_ = false;
    /**
     * <pre>
     * Allowed indicates whether or not the admission request was permitted.
     * </pre>
     *
     * <code>optional bool allowed = 2;</code>
     * @return Whether the allowed field is set.
     */
    @java.lang.Override
    public boolean hasAllowed() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Allowed indicates whether or not the admission request was permitted.
     * </pre>
     *
     * <code>optional bool allowed = 2;</code>
     * @return The allowed.
     */
    @java.lang.Override
    public boolean getAllowed() {
      return allowed_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.Meta.Status status_;
    /**
     * <pre>
     * Result contains extra details into why an admission request was denied.
     * This field IS NOT consulted in any way if "Allowed" is "true".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Result contains extra details into why an admission request was denied.
     * This field IS NOT consulted in any way if "Allowed" is "true".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Status getStatus() {
      return status_ == null ? io.kubernetes.client.proto.Meta.Status.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * Result contains extra details into why an admission request was denied.
     * This field IS NOT consulted in any way if "Allowed" is "true".
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.StatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.Meta.Status.getDefaultInstance() : status_;
    }

    public static final int PATCH_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString patch_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * The patch body. Currently we only support "JSONPatch" which implements RFC 6902.
     * +optional
     * </pre>
     *
     * <code>optional bytes patch = 4;</code>
     * @return Whether the patch field is set.
     */
    @java.lang.Override
    public boolean hasPatch() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * The patch body. Currently we only support "JSONPatch" which implements RFC 6902.
     * +optional
     * </pre>
     *
     * <code>optional bytes patch = 4;</code>
     * @return The patch.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPatch() {
      return patch_;
    }

    public static final int PATCHTYPE_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object patchType_ = "";
    /**
     * <pre>
     * The type of Patch. Currently we only allow "JSONPatch".
     * +optional
     * </pre>
     *
     * <code>optional string patchType = 5;</code>
     * @return Whether the patchType field is set.
     */
    @java.lang.Override
    public boolean hasPatchType() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * The type of Patch. Currently we only allow "JSONPatch".
     * +optional
     * </pre>
     *
     * <code>optional string patchType = 5;</code>
     * @return The patchType.
     */
    @java.lang.Override
    public java.lang.String getPatchType() {
      java.lang.Object ref = patchType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          patchType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The type of Patch. Currently we only allow "JSONPatch".
     * +optional
     * </pre>
     *
     * <code>optional string patchType = 5;</code>
     * @return The bytes for patchType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPatchTypeBytes() {
      java.lang.Object ref = patchType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        patchType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int AUDITANNOTATIONS_FIELD_NUMBER = 6;
    private static final class AuditAnnotationsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  io.kubernetes.client.proto.V1beta1Admission.internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_AuditAnnotationsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> auditAnnotations_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetAuditAnnotations() {
      if (auditAnnotations_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            AuditAnnotationsDefaultEntryHolder.defaultEntry);
      }
      return auditAnnotations_;
    }
    public int getAuditAnnotationsCount() {
      return internalGetAuditAnnotations().getMap().size();
    }
    /**
     * <pre>
     * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
     * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
     * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
     * the admission webhook to add additional context to the audit log for this request.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
     */
    @java.lang.Override
    public boolean containsAuditAnnotations(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetAuditAnnotations().getMap().containsKey(key);
    }
    /**
     * Use {@link #getAuditAnnotationsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getAuditAnnotations() {
      return getAuditAnnotationsMap();
    }
    /**
     * <pre>
     * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
     * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
     * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
     * the admission webhook to add additional context to the audit log for this request.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getAuditAnnotationsMap() {
      return internalGetAuditAnnotations().getMap();
    }
    /**
     * <pre>
     * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
     * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
     * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
     * the admission webhook to add additional context to the audit log for this request.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getAuditAnnotationsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetAuditAnnotations().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
     * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
     * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
     * the admission webhook to add additional context to the audit log for this request.
     * +optional
     * </pre>
     *
     * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
     */
    @java.lang.Override
    public java.lang.String getAuditAnnotationsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetAuditAnnotations().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int WARNINGS_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList warnings_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * warnings is a list of warning messages to return to the requesting API client.
     * Warning messages describe a problem the client making the API request should correct or be aware of.
     * Limit warnings to 120 characters if possible.
     * Warnings over 256 characters and large numbers of warnings may be truncated.
     * +optional
     * </pre>
     *
     * <code>repeated string warnings = 7;</code>
     * @return A list containing the warnings.
     */
    public com.google.protobuf.ProtocolStringList
        getWarningsList() {
      return warnings_;
    }
    /**
     * <pre>
     * warnings is a list of warning messages to return to the requesting API client.
     * Warning messages describe a problem the client making the API request should correct or be aware of.
     * Limit warnings to 120 characters if possible.
     * Warnings over 256 characters and large numbers of warnings may be truncated.
     * +optional
     * </pre>
     *
     * <code>repeated string warnings = 7;</code>
     * @return The count of warnings.
     */
    public int getWarningsCount() {
      return warnings_.size();
    }
    /**
     * <pre>
     * warnings is a list of warning messages to return to the requesting API client.
     * Warning messages describe a problem the client making the API request should correct or be aware of.
     * Limit warnings to 120 characters if possible.
     * Warnings over 256 characters and large numbers of warnings may be truncated.
     * +optional
     * </pre>
     *
     * <code>repeated string warnings = 7;</code>
     * @param index The index of the element to return.
     * @return The warnings at the given index.
     */
    public java.lang.String getWarnings(int index) {
      return warnings_.get(index);
    }
    /**
     * <pre>
     * warnings is a list of warning messages to return to the requesting API client.
     * Warning messages describe a problem the client making the API request should correct or be aware of.
     * Limit warnings to 120 characters if possible.
     * Warnings over 256 characters and large numbers of warnings may be truncated.
     * +optional
     * </pre>
     *
     * <code>repeated string warnings = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the warnings at the given index.
     */
    public com.google.protobuf.ByteString
        getWarningsBytes(int index) {
      return warnings_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, uid_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, allowed_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getStatus());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBytes(4, patch_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, patchType_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetAuditAnnotations(),
          AuditAnnotationsDefaultEntryHolder.defaultEntry,
          6);
      for (int i = 0; i < warnings_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, warnings_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, uid_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, allowed_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getStatus());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, patch_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, patchType_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetAuditAnnotations().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        auditAnnotations__ = AuditAnnotationsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, auditAnnotations__);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < warnings_.size(); i++) {
          dataSize += computeStringSizeNoTag(warnings_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getWarningsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasUid() != other.hasUid()) return false;
      if (hasUid()) {
        if (!getUid()
            .equals(other.getUid())) return false;
      }
      if (hasAllowed() != other.hasAllowed()) return false;
      if (hasAllowed()) {
        if (getAllowed()
            != other.getAllowed()) return false;
      }
      if (hasStatus() != other.hasStatus()) return false;
      if (hasStatus()) {
        if (!getStatus()
            .equals(other.getStatus())) return false;
      }
      if (hasPatch() != other.hasPatch()) return false;
      if (hasPatch()) {
        if (!getPatch()
            .equals(other.getPatch())) return false;
      }
      if (hasPatchType() != other.hasPatchType()) return false;
      if (hasPatchType()) {
        if (!getPatchType()
            .equals(other.getPatchType())) return false;
      }
      if (!internalGetAuditAnnotations().equals(
          other.internalGetAuditAnnotations())) return false;
      if (!getWarningsList()
          .equals(other.getWarningsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUid()) {
        hash = (37 * hash) + UID_FIELD_NUMBER;
        hash = (53 * hash) + getUid().hashCode();
      }
      if (hasAllowed()) {
        hash = (37 * hash) + ALLOWED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getAllowed());
      }
      if (hasStatus()) {
        hash = (37 * hash) + STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getStatus().hashCode();
      }
      if (hasPatch()) {
        hash = (37 * hash) + PATCH_FIELD_NUMBER;
        hash = (53 * hash) + getPatch().hashCode();
      }
      if (hasPatchType()) {
        hash = (37 * hash) + PATCHTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getPatchType().hashCode();
      }
      if (!internalGetAuditAnnotations().getMap().isEmpty()) {
        hash = (37 * hash) + AUDITANNOTATIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetAuditAnnotations().hashCode();
      }
      if (getWarningsCount() > 0) {
        hash = (37 * hash) + WARNINGS_FIELD_NUMBER;
        hash = (53 * hash) + getWarningsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

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

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * AdmissionResponse describes an admission response.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.admission.v1beta1.AdmissionResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.admission.v1beta1.AdmissionResponse)
        io.kubernetes.client.proto.V1beta1Admission.AdmissionResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Admission.internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 6:
            return internalGetAuditAnnotations();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 6:
            return internalGetMutableAuditAnnotations();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Admission.internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse.class, io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getStatusFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        uid_ = "";
        allowed_ = false;
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        patch_ = com.google.protobuf.ByteString.EMPTY;
        patchType_ = "";
        internalGetMutableAuditAnnotations().clear();
        warnings_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

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

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

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

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

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.uid_ = uid_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.allowed_ = allowed_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.status_ = statusBuilder_ == null
              ? status_
              : statusBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.patch_ = patch_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.patchType_ = patchType_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.auditAnnotations_ = internalGetAuditAnnotations();
          result.auditAnnotations_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          warnings_.makeImmutable();
          result.warnings_ = warnings_;
        }
        result.bitField0_ |= to_bitField0_;
      }

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

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse other) {
        if (other == io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse.getDefaultInstance()) return this;
        if (other.hasUid()) {
          uid_ = other.uid_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasAllowed()) {
          setAllowed(other.getAllowed());
        }
        if (other.hasStatus()) {
          mergeStatus(other.getStatus());
        }
        if (other.hasPatch()) {
          setPatch(other.getPatch());
        }
        if (other.hasPatchType()) {
          patchType_ = other.patchType_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        internalGetMutableAuditAnnotations().mergeFrom(
            other.internalGetAuditAnnotations());
        bitField0_ |= 0x00000020;
        if (!other.warnings_.isEmpty()) {
          if (warnings_.isEmpty()) {
            warnings_ = other.warnings_;
            bitField0_ |= 0x00000040;
          } else {
            ensureWarningsIsMutable();
            warnings_.addAll(other.warnings_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                uid_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                allowed_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                input.readMessage(
                    getStatusFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                patch_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                patchType_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                auditAnnotations__ = input.readMessage(
                    AuditAnnotationsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableAuditAnnotations().getMutableMap().put(
                    auditAnnotations__.getKey(), auditAnnotations__.getValue());
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureWarningsIsMutable();
                warnings_.add(bs);
                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

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

      private boolean allowed_ ;
      /**
       * <pre>
       * Allowed indicates whether or not the admission request was permitted.
       * </pre>
       *
       * <code>optional bool allowed = 2;</code>
       * @return Whether the allowed field is set.
       */
      @java.lang.Override
      public boolean hasAllowed() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Allowed indicates whether or not the admission request was permitted.
       * </pre>
       *
       * <code>optional bool allowed = 2;</code>
       * @return The allowed.
       */
      @java.lang.Override
      public boolean getAllowed() {
        return allowed_;
      }
      /**
       * <pre>
       * Allowed indicates whether or not the admission request was permitted.
       * </pre>
       *
       * <code>optional bool allowed = 2;</code>
       * @param value The allowed to set.
       * @return This builder for chaining.
       */
      public Builder setAllowed(boolean value) {

        allowed_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Allowed indicates whether or not the admission request was permitted.
       * </pre>
       *
       * <code>optional bool allowed = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAllowed() {
        bitField0_ = (bitField0_ & ~0x00000002);
        allowed_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.Status status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Status, io.kubernetes.client.proto.Meta.Status.Builder, io.kubernetes.client.proto.Meta.StatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * Result contains extra details into why an admission request was denied.
       * This field IS NOT consulted in any way if "Allowed" is "true".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Result contains extra details into why an admission request was denied.
       * This field IS NOT consulted in any way if "Allowed" is "true".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.Meta.Status getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.Meta.Status.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Result contains extra details into why an admission request was denied.
       * This field IS NOT consulted in any way if "Allowed" is "true".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.Meta.Status value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Result contains extra details into why an admission request was denied.
       * This field IS NOT consulted in any way if "Allowed" is "true".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.Meta.Status.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Result contains extra details into why an admission request was denied.
       * This field IS NOT consulted in any way if "Allowed" is "true".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.Meta.Status value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.Meta.Status.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Result contains extra details into why an admission request was denied.
       * This field IS NOT consulted in any way if "Allowed" is "true".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Result contains extra details into why an admission request was denied.
       * This field IS NOT consulted in any way if "Allowed" is "true".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.Status.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Result contains extra details into why an admission request was denied.
       * This field IS NOT consulted in any way if "Allowed" is "true".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.StatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.Meta.Status.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * Result contains extra details into why an admission request was denied.
       * This field IS NOT consulted in any way if "Allowed" is "true".
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Status, io.kubernetes.client.proto.Meta.Status.Builder, io.kubernetes.client.proto.Meta.StatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Status, io.kubernetes.client.proto.Meta.Status.Builder, io.kubernetes.client.proto.Meta.StatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      private com.google.protobuf.ByteString patch_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * The patch body. Currently we only support "JSONPatch" which implements RFC 6902.
       * +optional
       * </pre>
       *
       * <code>optional bytes patch = 4;</code>
       * @return Whether the patch field is set.
       */
      @java.lang.Override
      public boolean hasPatch() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The patch body. Currently we only support "JSONPatch" which implements RFC 6902.
       * +optional
       * </pre>
       *
       * <code>optional bytes patch = 4;</code>
       * @return The patch.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPatch() {
        return patch_;
      }
      /**
       * <pre>
       * The patch body. Currently we only support "JSONPatch" which implements RFC 6902.
       * +optional
       * </pre>
       *
       * <code>optional bytes patch = 4;</code>
       * @param value The patch to set.
       * @return This builder for chaining.
       */
      public Builder setPatch(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        patch_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The patch body. Currently we only support "JSONPatch" which implements RFC 6902.
       * +optional
       * </pre>
       *
       * <code>optional bytes patch = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPatch() {
        bitField0_ = (bitField0_ & ~0x00000008);
        patch_ = getDefaultInstance().getPatch();
        onChanged();
        return this;
      }

      private java.lang.Object patchType_ = "";
      /**
       * <pre>
       * The type of Patch. Currently we only allow "JSONPatch".
       * +optional
       * </pre>
       *
       * <code>optional string patchType = 5;</code>
       * @return Whether the patchType field is set.
       */
      public boolean hasPatchType() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * The type of Patch. Currently we only allow "JSONPatch".
       * +optional
       * </pre>
       *
       * <code>optional string patchType = 5;</code>
       * @return The patchType.
       */
      public java.lang.String getPatchType() {
        java.lang.Object ref = patchType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            patchType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The type of Patch. Currently we only allow "JSONPatch".
       * +optional
       * </pre>
       *
       * <code>optional string patchType = 5;</code>
       * @return The bytes for patchType.
       */
      public com.google.protobuf.ByteString
          getPatchTypeBytes() {
        java.lang.Object ref = patchType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          patchType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The type of Patch. Currently we only allow "JSONPatch".
       * +optional
       * </pre>
       *
       * <code>optional string patchType = 5;</code>
       * @param value The patchType to set.
       * @return This builder for chaining.
       */
      public Builder setPatchType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        patchType_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The type of Patch. Currently we only allow "JSONPatch".
       * +optional
       * </pre>
       *
       * <code>optional string patchType = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearPatchType() {
        patchType_ = getDefaultInstance().getPatchType();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The type of Patch. Currently we only allow "JSONPatch".
       * +optional
       * </pre>
       *
       * <code>optional string patchType = 5;</code>
       * @param value The bytes for patchType to set.
       * @return This builder for chaining.
       */
      public Builder setPatchTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        patchType_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> auditAnnotations_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetAuditAnnotations() {
        if (auditAnnotations_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              AuditAnnotationsDefaultEntryHolder.defaultEntry);
        }
        return auditAnnotations_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableAuditAnnotations() {
        if (auditAnnotations_ == null) {
          auditAnnotations_ = com.google.protobuf.MapField.newMapField(
              AuditAnnotationsDefaultEntryHolder.defaultEntry);
        }
        if (!auditAnnotations_.isMutable()) {
          auditAnnotations_ = auditAnnotations_.copy();
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return auditAnnotations_;
      }
      public int getAuditAnnotationsCount() {
        return internalGetAuditAnnotations().getMap().size();
      }
      /**
       * <pre>
       * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
       * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
       * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
       * the admission webhook to add additional context to the audit log for this request.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
       */
      @java.lang.Override
      public boolean containsAuditAnnotations(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetAuditAnnotations().getMap().containsKey(key);
      }
      /**
       * Use {@link #getAuditAnnotationsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getAuditAnnotations() {
        return getAuditAnnotationsMap();
      }
      /**
       * <pre>
       * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
       * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
       * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
       * the admission webhook to add additional context to the audit log for this request.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getAuditAnnotationsMap() {
        return internalGetAuditAnnotations().getMap();
      }
      /**
       * <pre>
       * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
       * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
       * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
       * the admission webhook to add additional context to the audit log for this request.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getAuditAnnotationsOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetAuditAnnotations().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
       * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
       * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
       * the admission webhook to add additional context to the audit log for this request.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
       */
      @java.lang.Override
      public java.lang.String getAuditAnnotationsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetAuditAnnotations().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearAuditAnnotations() {
        bitField0_ = (bitField0_ & ~0x00000020);
        internalGetMutableAuditAnnotations().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
       * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
       * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
       * the admission webhook to add additional context to the audit log for this request.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
       */
      public Builder removeAuditAnnotations(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableAuditAnnotations().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableAuditAnnotations() {
        bitField0_ |= 0x00000020;
        return internalGetMutableAuditAnnotations().getMutableMap();
      }
      /**
       * <pre>
       * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
       * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
       * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
       * the admission webhook to add additional context to the audit log for this request.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
       */
      public Builder putAuditAnnotations(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableAuditAnnotations().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <pre>
       * AuditAnnotations is an unstructured key value map set by remote admission controller (e.g. error=image-blacklisted).
       * MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission controller will prefix the keys with
       * admission webhook name (e.g. imagepolicy.example.com/error=image-blacklisted). AuditAnnotations will be provided by
       * the admission webhook to add additional context to the audit log for this request.
       * +optional
       * </pre>
       *
       * <code>map&lt;string, string&gt; auditAnnotations = 6;</code>
       */
      public Builder putAllAuditAnnotations(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableAuditAnnotations().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000020;
        return this;
      }

      private com.google.protobuf.LazyStringArrayList warnings_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureWarningsIsMutable() {
        if (!warnings_.isModifiable()) {
          warnings_ = new com.google.protobuf.LazyStringArrayList(warnings_);
        }
        bitField0_ |= 0x00000040;
      }
      /**
       * <pre>
       * warnings is a list of warning messages to return to the requesting API client.
       * Warning messages describe a problem the client making the API request should correct or be aware of.
       * Limit warnings to 120 characters if possible.
       * Warnings over 256 characters and large numbers of warnings may be truncated.
       * +optional
       * </pre>
       *
       * <code>repeated string warnings = 7;</code>
       * @return A list containing the warnings.
       */
      public com.google.protobuf.ProtocolStringList
          getWarningsList() {
        warnings_.makeImmutable();
        return warnings_;
      }
      /**
       * <pre>
       * warnings is a list of warning messages to return to the requesting API client.
       * Warning messages describe a problem the client making the API request should correct or be aware of.
       * Limit warnings to 120 characters if possible.
       * Warnings over 256 characters and large numbers of warnings may be truncated.
       * +optional
       * </pre>
       *
       * <code>repeated string warnings = 7;</code>
       * @return The count of warnings.
       */
      public int getWarningsCount() {
        return warnings_.size();
      }
      /**
       * <pre>
       * warnings is a list of warning messages to return to the requesting API client.
       * Warning messages describe a problem the client making the API request should correct or be aware of.
       * Limit warnings to 120 characters if possible.
       * Warnings over 256 characters and large numbers of warnings may be truncated.
       * +optional
       * </pre>
       *
       * <code>repeated string warnings = 7;</code>
       * @param index The index of the element to return.
       * @return The warnings at the given index.
       */
      public java.lang.String getWarnings(int index) {
        return warnings_.get(index);
      }
      /**
       * <pre>
       * warnings is a list of warning messages to return to the requesting API client.
       * Warning messages describe a problem the client making the API request should correct or be aware of.
       * Limit warnings to 120 characters if possible.
       * Warnings over 256 characters and large numbers of warnings may be truncated.
       * +optional
       * </pre>
       *
       * <code>repeated string warnings = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the warnings at the given index.
       */
      public com.google.protobuf.ByteString
          getWarningsBytes(int index) {
        return warnings_.getByteString(index);
      }
      /**
       * <pre>
       * warnings is a list of warning messages to return to the requesting API client.
       * Warning messages describe a problem the client making the API request should correct or be aware of.
       * Limit warnings to 120 characters if possible.
       * Warnings over 256 characters and large numbers of warnings may be truncated.
       * +optional
       * </pre>
       *
       * <code>repeated string warnings = 7;</code>
       * @param index The index to set the value at.
       * @param value The warnings to set.
       * @return This builder for chaining.
       */
      public Builder setWarnings(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureWarningsIsMutable();
        warnings_.set(index, value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * warnings is a list of warning messages to return to the requesting API client.
       * Warning messages describe a problem the client making the API request should correct or be aware of.
       * Limit warnings to 120 characters if possible.
       * Warnings over 256 characters and large numbers of warnings may be truncated.
       * +optional
       * </pre>
       *
       * <code>repeated string warnings = 7;</code>
       * @param value The warnings to add.
       * @return This builder for chaining.
       */
      public Builder addWarnings(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureWarningsIsMutable();
        warnings_.add(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * warnings is a list of warning messages to return to the requesting API client.
       * Warning messages describe a problem the client making the API request should correct or be aware of.
       * Limit warnings to 120 characters if possible.
       * Warnings over 256 characters and large numbers of warnings may be truncated.
       * +optional
       * </pre>
       *
       * <code>repeated string warnings = 7;</code>
       * @param values The warnings to add.
       * @return This builder for chaining.
       */
      public Builder addAllWarnings(
          java.lang.Iterable<java.lang.String> values) {
        ensureWarningsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, warnings_);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * warnings is a list of warning messages to return to the requesting API client.
       * Warning messages describe a problem the client making the API request should correct or be aware of.
       * Limit warnings to 120 characters if possible.
       * Warnings over 256 characters and large numbers of warnings may be truncated.
       * +optional
       * </pre>
       *
       * <code>repeated string warnings = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearWarnings() {
        warnings_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * warnings is a list of warning messages to return to the requesting API client.
       * Warning messages describe a problem the client making the API request should correct or be aware of.
       * Limit warnings to 120 characters if possible.
       * Warnings over 256 characters and large numbers of warnings may be truncated.
       * +optional
       * </pre>
       *
       * <code>repeated string warnings = 7;</code>
       * @param value The bytes of the warnings to add.
       * @return This builder for chaining.
       */
      public Builder addWarningsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureWarningsIsMutable();
        warnings_.add(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.api.admission.v1beta1.AdmissionResponse)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.admission.v1beta1.AdmissionResponse)
    private static final io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse();
    }

    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  public interface AdmissionReviewOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.admission.v1beta1.AdmissionReview)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Request describes the attributes for the admission request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.admission.v1beta1.AdmissionRequest request = 1;</code>
     * @return Whether the request field is set.
     */
    boolean hasRequest();
    /**
     * <pre>
     * Request describes the attributes for the admission request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.admission.v1beta1.AdmissionRequest request = 1;</code>
     * @return The request.
     */
    io.kubernetes.client.proto.V1beta1Admission.AdmissionRequest getRequest();
    /**
     * <pre>
     * Request describes the attributes for the admission request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.admission.v1beta1.AdmissionRequest request = 1;</code>
     */
    io.kubernetes.client.proto.V1beta1Admission.AdmissionRequestOrBuilder getRequestOrBuilder();

    /**
     * <pre>
     * Response describes the attributes for the admission response.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.admission.v1beta1.AdmissionResponse response = 2;</code>
     * @return Whether the response field is set.
     */
    boolean hasResponse();
    /**
     * <pre>
     * Response describes the attributes for the admission response.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.admission.v1beta1.AdmissionResponse response = 2;</code>
     * @return The response.
     */
    io.kubernetes.client.proto.V1beta1Admission.AdmissionResponse getResponse();
    /**
     * <pre>
     * Response describes the attributes for the admission response.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.api.admission.v1beta1.AdmissionResponse response = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Admission.AdmissionResponseOrBuilder getResponseOrBuilder();
  }
  /**
   * <pre>
   * AdmissionReview describes an admission review request/response.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.admission.v1beta1.AdmissionReview}
   */
  public static final class AdmissionReview extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.admission.v1beta1.AdmissionReview)
      AdmissionReviewOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        AdmissionReview.class.getName());
    }
    // Use AdmissionReview.newBuilder() to construct.
    private AdmissionReview(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private AdmissionReview() {
    }

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

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

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

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

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionReview parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionReview parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionReview parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionReview parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionReview parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionReview parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionReview parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionReview parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

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

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * AdmissionReview describes an admission review request/response.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.admission.v1beta1.AdmissionReview}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.admission.v1beta1.AdmissionReview)
        io.kubernetes.client.proto.V1beta1Admission.AdmissionReviewOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Admission.internal_static_k8s_io_api_admission_v1beta1_AdmissionReview_descriptor;
      }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      // @@protoc_insertion_point(builder_scope:k8s.io.api.admission.v1beta1.AdmissionReview)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.admission.v1beta1.AdmissionReview)
    private static final io.kubernetes.client.proto.V1beta1Admission.AdmissionReview DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Admission.AdmissionReview();
    }

    public static io.kubernetes.client.proto.V1beta1Admission.AdmissionReview getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

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

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_admission_v1beta1_AdmissionRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_admission_v1beta1_AdmissionRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_AuditAnnotationsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_AuditAnnotationsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_admission_v1beta1_AdmissionReview_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_api_admission_v1beta1_AdmissionReview_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/admission/v1beta1/generated" +
      ".proto\022\034k8s.io.api.admission.v1beta1\032,k8" +
      "s.io/api/authentication/v1/generated.pro" +
      "to\0324k8s.io/apimachinery/pkg/apis/meta/v1" +
      "/generated.proto\032/k8s.io/apimachinery/pk" +
      "g/runtime/generated.proto\0326k8s.io/apimac" +
      "hinery/pkg/runtime/schema/generated.prot" +
      "o\"\305\005\n\020AdmissionRequest\022\013\n\003uid\030\001 \001(\t\022D\n\004k" +
      "ind\030\002 \001(\01326.k8s.io.apimachinery.pkg.apis" +
      ".meta.v1.GroupVersionKind\022L\n\010resource\030\003 " +
      "\001(\0132:.k8s.io.apimachinery.pkg.apis.meta." +
      "v1.GroupVersionResource\022\023\n\013subResource\030\004" +
      " \001(\t\022K\n\013requestKind\030\r \001(\01326.k8s.io.apima" +
      "chinery.pkg.apis.meta.v1.GroupVersionKin" +
      "d\022S\n\017requestResource\030\016 \001(\0132:.k8s.io.apim" +
      "achinery.pkg.apis.meta.v1.GroupVersionRe" +
      "source\022\032\n\022requestSubResource\030\017 \001(\t\022\014\n\004na" +
      "me\030\005 \001(\t\022\021\n\tnamespace\030\006 \001(\t\022\021\n\toperation" +
      "\030\007 \001(\t\0228\n\010userInfo\030\010 \001(\0132&.k8s.io.api.au" +
      "thentication.v1.UserInfo\022=\n\006object\030\t \001(\013" +
      "2-.k8s.io.apimachinery.pkg.runtime.RawEx" +
      "tension\022@\n\toldObject\030\n \001(\0132-.k8s.io.apim" +
      "achinery.pkg.runtime.RawExtension\022\016\n\006dry" +
      "Run\030\013 \001(\010\022>\n\007options\030\014 \001(\0132-.k8s.io.apim" +
      "achinery.pkg.runtime.RawExtension\"\275\002\n\021Ad" +
      "missionResponse\022\013\n\003uid\030\001 \001(\t\022\017\n\007allowed\030" +
      "\002 \001(\010\022<\n\006status\030\003 \001(\0132,.k8s.io.apimachin" +
      "ery.pkg.apis.meta.v1.Status\022\r\n\005patch\030\004 \001" +
      "(\014\022\021\n\tpatchType\030\005 \001(\t\022_\n\020auditAnnotation" +
      "s\030\006 \003(\0132E.k8s.io.api.admission.v1beta1.A" +
      "dmissionResponse.AuditAnnotationsEntry\022\020" +
      "\n\010warnings\030\007 \003(\t\0327\n\025AuditAnnotationsEntr" +
      "y\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\225\001\n\017Ad" +
      "missionReview\022?\n\007request\030\001 \001(\0132..k8s.io." +
      "api.admission.v1beta1.AdmissionRequest\022A" +
      "\n\010response\030\002 \001(\0132/.k8s.io.api.admission." +
      "v1beta1.AdmissionResponseBL\n\032io.kubernet" +
      "es.client.protoB\020V1beta1AdmissionZ\034k8s.i" +
      "o/api/admission/v1beta1"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          io.kubernetes.client.proto.V1Authentication.getDescriptor(),
          io.kubernetes.client.proto.Meta.getDescriptor(),
          io.kubernetes.client.proto.Runtime.getDescriptor(),
          io.kubernetes.client.proto.RuntimeSchema.getDescriptor(),
        });
    internal_static_k8s_io_api_admission_v1beta1_AdmissionRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_k8s_io_api_admission_v1beta1_AdmissionRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_admission_v1beta1_AdmissionRequest_descriptor,
        new java.lang.String[] { "Uid", "Kind", "Resource", "SubResource", "RequestKind", "RequestResource", "RequestSubResource", "Name", "Namespace", "Operation", "UserInfo", "Object", "OldObject", "DryRun", "Options", });
    internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_descriptor,
        new java.lang.String[] { "Uid", "Allowed", "Status", "Patch", "PatchType", "AuditAnnotations", "Warnings", });
    internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_AuditAnnotationsEntry_descriptor =
      internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_AuditAnnotationsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_admission_v1beta1_AdmissionResponse_AuditAnnotationsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_api_admission_v1beta1_AdmissionReview_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_k8s_io_api_admission_v1beta1_AdmissionReview_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_api_admission_v1beta1_AdmissionReview_descriptor,
        new java.lang.String[] { "Request", "Response", });
    descriptor.resolveAllFeaturesImmutable();
    io.kubernetes.client.proto.V1Authentication.getDescriptor();
    io.kubernetes.client.proto.Meta.getDescriptor();
    io.kubernetes.client.proto.Runtime.getDescriptor();
    io.kubernetes.client.proto.RuntimeSchema.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
