/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/osconfig/v1beta/guest_policies.proto

package com.google.cloud.osconfig.v1beta;

public final class GuestPolicies {
  private GuestPolicies() {}

  public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {}

  public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   *
   *
   * <pre>
   * The desired state that the OS Config agent maintains on the VM instance.
   * </pre>
   *
   * Protobuf enum {@code google.cloud.osconfig.v1beta.DesiredState}
   */
  public enum DesiredState implements com.google.protobuf.ProtocolMessageEnum {
    /**
     *
     *
     * <pre>
     * The default is to ensure the package is installed.
     * </pre>
     *
     * <code>DESIRED_STATE_UNSPECIFIED = 0;</code>
     */
    DESIRED_STATE_UNSPECIFIED(0),
    /**
     *
     *
     * <pre>
     * The agent ensures that the package is installed.
     * </pre>
     *
     * <code>INSTALLED = 1;</code>
     */
    INSTALLED(1),
    /**
     *
     *
     * <pre>
     * The agent ensures that the package is installed and
     * periodically checks for and install any updates.
     * </pre>
     *
     * <code>UPDATED = 2;</code>
     */
    UPDATED(2),
    /**
     *
     *
     * <pre>
     * The agent ensures that the package is not installed and uninstall it
     * if detected.
     * </pre>
     *
     * <code>REMOVED = 3;</code>
     */
    REMOVED(3),
    UNRECOGNIZED(-1),
    ;

    /**
     *
     *
     * <pre>
     * The default is to ensure the package is installed.
     * </pre>
     *
     * <code>DESIRED_STATE_UNSPECIFIED = 0;</code>
     */
    public static final int DESIRED_STATE_UNSPECIFIED_VALUE = 0;
    /**
     *
     *
     * <pre>
     * The agent ensures that the package is installed.
     * </pre>
     *
     * <code>INSTALLED = 1;</code>
     */
    public static final int INSTALLED_VALUE = 1;
    /**
     *
     *
     * <pre>
     * The agent ensures that the package is installed and
     * periodically checks for and install any updates.
     * </pre>
     *
     * <code>UPDATED = 2;</code>
     */
    public static final int UPDATED_VALUE = 2;
    /**
     *
     *
     * <pre>
     * The agent ensures that the package is not installed and uninstall it
     * if detected.
     * </pre>
     *
     * <code>REMOVED = 3;</code>
     */
    public static final int REMOVED_VALUE = 3;

    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static DesiredState valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static DesiredState forNumber(int value) {
      switch (value) {
        case 0:
          return DESIRED_STATE_UNSPECIFIED;
        case 1:
          return INSTALLED;
        case 2:
          return UPDATED;
        case 3:
          return REMOVED;
        default:
          return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<DesiredState> internalGetValueMap() {
      return internalValueMap;
    }

    private static final com.google.protobuf.Internal.EnumLiteMap<DesiredState> internalValueMap =
        new com.google.protobuf.Internal.EnumLiteMap<DesiredState>() {
          public DesiredState findValueByNumber(int number) {
            return DesiredState.forNumber(number);
          }
        };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }

    public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
      return getDescriptor();
    }

    public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies.getDescriptor().getEnumTypes().get(0);
    }

    private static final DesiredState[] VALUES = values();

    public static DesiredState valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private DesiredState(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:google.cloud.osconfig.v1beta.DesiredState)
  }

  public interface GuestPolicyOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.GuestPolicy)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. Unique name of the resource in this project using one of the following
     * forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The name.
     */
    java.lang.String getName();
    /**
     *
     *
     * <pre>
     * Required. Unique name of the resource in this project using one of the following
     * forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString getNameBytes();

    /**
     *
     *
     * <pre>
     * Description of the guest policy. Length of the description is limited
     * to 1024 characters.
     * </pre>
     *
     * <code>string description = 2;</code>
     *
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     *
     *
     * <pre>
     * Description of the guest policy. Length of the description is limited
     * to 1024 characters.
     * </pre>
     *
     * <code>string description = 2;</code>
     *
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString getDescriptionBytes();

    /**
     *
     *
     * <pre>
     * Output only. Time this guest policy was created.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return Whether the createTime field is set.
     */
    boolean hasCreateTime();
    /**
     *
     *
     * <pre>
     * Output only. Time this guest policy was created.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return The createTime.
     */
    com.google.protobuf.Timestamp getCreateTime();
    /**
     *
     *
     * <pre>
     * Output only. Time this guest policy was created.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder();

    /**
     *
     *
     * <pre>
     * Output only. Last time this guest policy was updated.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return Whether the updateTime field is set.
     */
    boolean hasUpdateTime();
    /**
     *
     *
     * <pre>
     * Output only. Last time this guest policy was updated.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return The updateTime.
     */
    com.google.protobuf.Timestamp getUpdateTime();
    /**
     *
     *
     * <pre>
     * Output only. Last time this guest policy was updated.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder();

    /**
     *
     *
     * <pre>
     * Required. Specifies the VM instances that are assigned to this policy. This allows
     * you to target sets or groups of VM instances by different parameters such
     * as labels, names, OS, or zones.
     * If left empty, all VM instances underneath this policy are targeted.
     * At the same level in the resource hierarchy (that is within a project), the
     * service prevents the creation of multiple policies that conflict with
     * each other. For more information, see how the service [handles assignment
     * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return Whether the assignment field is set.
     */
    boolean hasAssignment();
    /**
     *
     *
     * <pre>
     * Required. Specifies the VM instances that are assigned to this policy. This allows
     * you to target sets or groups of VM instances by different parameters such
     * as labels, names, OS, or zones.
     * If left empty, all VM instances underneath this policy are targeted.
     * At the same level in the resource hierarchy (that is within a project), the
     * service prevents the creation of multiple policies that conflict with
     * each other. For more information, see how the service [handles assignment
     * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return The assignment.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment getAssignment();
    /**
     *
     *
     * <pre>
     * Required. Specifies the VM instances that are assigned to this policy. This allows
     * you to target sets or groups of VM instances by different parameters such
     * as labels, names, OS, or zones.
     * If left empty, all VM instances underneath this policy are targeted.
     * At the same level in the resource hierarchy (that is within a project), the
     * service prevents the creation of multiple policies that conflict with
     * each other. For more information, see how the service [handles assignment
     * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.AssignmentOrBuilder getAssignmentOrBuilder();

    /**
     *
     *
     * <pre>
     * The software packages to be managed by this policy.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
     */
    java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Package> getPackagesList();
    /**
     *
     *
     * <pre>
     * The software packages to be managed by this policy.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.Package getPackages(int index);
    /**
     *
     *
     * <pre>
     * The software packages to be managed by this policy.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
     */
    int getPackagesCount();
    /**
     *
     *
     * <pre>
     * The software packages to be managed by this policy.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
     */
    java.util.List<? extends com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder>
        getPackagesOrBuilderList();
    /**
     *
     *
     * <pre>
     * The software packages to be managed by this policy.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder getPackagesOrBuilder(int index);

    /**
     *
     *
     * <pre>
     * A list of package repositories to configure on the VM instance. This is
     * done before any other configs are applied so they can use these repos.
     * Package repositories are only configured if the corresponding package
     * manager(s) are available.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
     * </code>
     */
    java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository>
        getPackageRepositoriesList();
    /**
     *
     *
     * <pre>
     * A list of package repositories to configure on the VM instance. This is
     * done before any other configs are applied so they can use these repos.
     * Package repositories are only configured if the corresponding package
     * manager(s) are available.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository getPackageRepositories(
        int index);
    /**
     *
     *
     * <pre>
     * A list of package repositories to configure on the VM instance. This is
     * done before any other configs are applied so they can use these repos.
     * Package repositories are only configured if the corresponding package
     * manager(s) are available.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
     * </code>
     */
    int getPackageRepositoriesCount();
    /**
     *
     *
     * <pre>
     * A list of package repositories to configure on the VM instance. This is
     * done before any other configs are applied so they can use these repos.
     * Package repositories are only configured if the corresponding package
     * manager(s) are available.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
     * </code>
     */
    java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder>
        getPackageRepositoriesOrBuilderList();
    /**
     *
     *
     * <pre>
     * A list of package repositories to configure on the VM instance. This is
     * done before any other configs are applied so they can use these repos.
     * Package repositories are only configured if the corresponding package
     * manager(s) are available.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder
        getPackageRepositoriesOrBuilder(int index);

    /**
     *
     *
     * <pre>
     * A list of Recipes to install on the VM instance.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
     */
    java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe> getRecipesList();
    /**
     *
     *
     * <pre>
     * A list of Recipes to install on the VM instance.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe getRecipes(int index);
    /**
     *
     *
     * <pre>
     * A list of Recipes to install on the VM instance.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
     */
    int getRecipesCount();
    /**
     *
     *
     * <pre>
     * A list of Recipes to install on the VM instance.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
     */
    java.util.List<? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder>
        getRecipesOrBuilderList();
    /**
     *
     *
     * <pre>
     * A list of Recipes to install on the VM instance.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder getRecipesOrBuilder(
        int index);

    /**
     *
     *
     * <pre>
     * The etag for this guest policy.
     * If this is provided on update, it must match the server's etag.
     * </pre>
     *
     * <code>string etag = 10;</code>
     *
     * @return The etag.
     */
    java.lang.String getEtag();
    /**
     *
     *
     * <pre>
     * The etag for this guest policy.
     * If this is provided on update, it must match the server's etag.
     * </pre>
     *
     * <code>string etag = 10;</code>
     *
     * @return The bytes for etag.
     */
    com.google.protobuf.ByteString getEtagBytes();
  }
  /**
   *
   *
   * <pre>
   * An OS Config resource representing a guest configuration policy. These
   * policies represent the desired state for VM instance guest environments
   * including packages to install or remove, package repository configurations,
   * and software to install.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.GuestPolicy}
   */
  public static final class GuestPolicy extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.GuestPolicy)
      GuestPolicyOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use GuestPolicy.newBuilder() to construct.
    private GuestPolicy(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private GuestPolicy() {
      name_ = "";
      description_ = "";
      packages_ = java.util.Collections.emptyList();
      packageRepositories_ = java.util.Collections.emptyList();
      recipes_ = java.util.Collections.emptyList();
      etag_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new GuestPolicy();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_GuestPolicy_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_GuestPolicy_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     *
     *
     * <pre>
     * Required. Unique name of the resource in this project using one of the following
     * forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
        name_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. Unique name of the resource in this project using one of the following
     * forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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 DESCRIPTION_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private volatile java.lang.Object description_ = "";
    /**
     *
     *
     * <pre>
     * Description of the guest policy. Length of the description is limited
     * to 1024 characters.
     * </pre>
     *
     * <code>string description = 2;</code>
     *
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        description_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Description of the guest policy. Length of the description is limited
     * to 1024 characters.
     * </pre>
     *
     * <code>string description = 2;</code>
     *
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CREATE_TIME_FIELD_NUMBER = 3;
    private com.google.protobuf.Timestamp createTime_;
    /**
     *
     *
     * <pre>
     * Output only. Time this guest policy was created.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return Whether the createTime field is set.
     */
    @java.lang.Override
    public boolean hasCreateTime() {
      return createTime_ != null;
    }
    /**
     *
     *
     * <pre>
     * Output only. Time this guest policy was created.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return The createTime.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getCreateTime() {
      return createTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createTime_;
    }
    /**
     *
     *
     * <pre>
     * Output only. Time this guest policy was created.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder() {
      return createTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createTime_;
    }

    public static final int UPDATE_TIME_FIELD_NUMBER = 4;
    private com.google.protobuf.Timestamp updateTime_;
    /**
     *
     *
     * <pre>
     * Output only. Last time this guest policy was updated.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return Whether the updateTime field is set.
     */
    @java.lang.Override
    public boolean hasUpdateTime() {
      return updateTime_ != null;
    }
    /**
     *
     *
     * <pre>
     * Output only. Last time this guest policy was updated.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return The updateTime.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getUpdateTime() {
      return updateTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : updateTime_;
    }
    /**
     *
     *
     * <pre>
     * Output only. Last time this guest policy was updated.
     * </pre>
     *
     * <code>
     * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder() {
      return updateTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : updateTime_;
    }

    public static final int ASSIGNMENT_FIELD_NUMBER = 6;
    private com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment assignment_;
    /**
     *
     *
     * <pre>
     * Required. Specifies the VM instances that are assigned to this policy. This allows
     * you to target sets or groups of VM instances by different parameters such
     * as labels, names, OS, or zones.
     * If left empty, all VM instances underneath this policy are targeted.
     * At the same level in the resource hierarchy (that is within a project), the
     * service prevents the creation of multiple policies that conflict with
     * each other. For more information, see how the service [handles assignment
     * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return Whether the assignment field is set.
     */
    @java.lang.Override
    public boolean hasAssignment() {
      return assignment_ != null;
    }
    /**
     *
     *
     * <pre>
     * Required. Specifies the VM instances that are assigned to this policy. This allows
     * you to target sets or groups of VM instances by different parameters such
     * as labels, names, OS, or zones.
     * If left empty, all VM instances underneath this policy are targeted.
     * At the same level in the resource hierarchy (that is within a project), the
     * service prevents the creation of multiple policies that conflict with
     * each other. For more information, see how the service [handles assignment
     * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return The assignment.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment getAssignment() {
      return assignment_ == null
          ? com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.getDefaultInstance()
          : assignment_;
    }
    /**
     *
     *
     * <pre>
     * Required. Specifies the VM instances that are assigned to this policy. This allows
     * you to target sets or groups of VM instances by different parameters such
     * as labels, names, OS, or zones.
     * If left empty, all VM instances underneath this policy are targeted.
     * At the same level in the resource hierarchy (that is within a project), the
     * service prevents the creation of multiple policies that conflict with
     * each other. For more information, see how the service [handles assignment
     * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.AssignmentOrBuilder
        getAssignmentOrBuilder() {
      return assignment_ == null
          ? com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.getDefaultInstance()
          : assignment_;
    }

    public static final int PACKAGES_FIELD_NUMBER = 7;

    @SuppressWarnings("serial")
    private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Package> packages_;
    /**
     *
     *
     * <pre>
     * The software packages to be managed by this policy.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Package>
        getPackagesList() {
      return packages_;
    }
    /**
     *
     *
     * <pre>
     * The software packages to be managed by this policy.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder>
        getPackagesOrBuilderList() {
      return packages_;
    }
    /**
     *
     *
     * <pre>
     * The software packages to be managed by this policy.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
     */
    @java.lang.Override
    public int getPackagesCount() {
      return packages_.size();
    }
    /**
     *
     *
     * <pre>
     * The software packages to be managed by this policy.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.Package getPackages(int index) {
      return packages_.get(index);
    }
    /**
     *
     *
     * <pre>
     * The software packages to be managed by this policy.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder getPackagesOrBuilder(
        int index) {
      return packages_.get(index);
    }

    public static final int PACKAGE_REPOSITORIES_FIELD_NUMBER = 8;

    @SuppressWarnings("serial")
    private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository>
        packageRepositories_;
    /**
     *
     *
     * <pre>
     * A list of package repositories to configure on the VM instance. This is
     * done before any other configs are applied so they can use these repos.
     * Package repositories are only configured if the corresponding package
     * manager(s) are available.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
     * </code>
     */
    @java.lang.Override
    public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository>
        getPackageRepositoriesList() {
      return packageRepositories_;
    }
    /**
     *
     *
     * <pre>
     * A list of package repositories to configure on the VM instance. This is
     * done before any other configs are applied so they can use these repos.
     * Package repositories are only configured if the corresponding package
     * manager(s) are available.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
     * </code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder>
        getPackageRepositoriesOrBuilderList() {
      return packageRepositories_;
    }
    /**
     *
     *
     * <pre>
     * A list of package repositories to configure on the VM instance. This is
     * done before any other configs are applied so they can use these repos.
     * Package repositories are only configured if the corresponding package
     * manager(s) are available.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
     * </code>
     */
    @java.lang.Override
    public int getPackageRepositoriesCount() {
      return packageRepositories_.size();
    }
    /**
     *
     *
     * <pre>
     * A list of package repositories to configure on the VM instance. This is
     * done before any other configs are applied so they can use these repos.
     * Package repositories are only configured if the corresponding package
     * manager(s) are available.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository getPackageRepositories(
        int index) {
      return packageRepositories_.get(index);
    }
    /**
     *
     *
     * <pre>
     * A list of package repositories to configure on the VM instance. This is
     * done before any other configs are applied so they can use these repos.
     * Package repositories are only configured if the corresponding package
     * manager(s) are available.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder
        getPackageRepositoriesOrBuilder(int index) {
      return packageRepositories_.get(index);
    }

    public static final int RECIPES_FIELD_NUMBER = 9;

    @SuppressWarnings("serial")
    private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe> recipes_;
    /**
     *
     *
     * <pre>
     * A list of Recipes to install on the VM instance.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe>
        getRecipesList() {
      return recipes_;
    }
    /**
     *
     *
     * <pre>
     * A list of Recipes to install on the VM instance.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder>
        getRecipesOrBuilderList() {
      return recipes_;
    }
    /**
     *
     *
     * <pre>
     * A list of Recipes to install on the VM instance.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
     */
    @java.lang.Override
    public int getRecipesCount() {
      return recipes_.size();
    }
    /**
     *
     *
     * <pre>
     * A list of Recipes to install on the VM instance.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe getRecipes(int index) {
      return recipes_.get(index);
    }
    /**
     *
     *
     * <pre>
     * A list of Recipes to install on the VM instance.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder
        getRecipesOrBuilder(int index) {
      return recipes_.get(index);
    }

    public static final int ETAG_FIELD_NUMBER = 10;

    @SuppressWarnings("serial")
    private volatile java.lang.Object etag_ = "";
    /**
     *
     *
     * <pre>
     * The etag for this guest policy.
     * If this is provided on update, it must match the server's etag.
     * </pre>
     *
     * <code>string etag = 10;</code>
     *
     * @return The etag.
     */
    @java.lang.Override
    public java.lang.String getEtag() {
      java.lang.Object ref = etag_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        etag_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * The etag for this guest policy.
     * If this is provided on update, it must match the server's etag.
     * </pre>
     *
     * <code>string etag = 10;</code>
     *
     * @return The bytes for etag.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getEtagBytes() {
      java.lang.Object ref = etag_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        etag_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
      }
      if (createTime_ != null) {
        output.writeMessage(3, getCreateTime());
      }
      if (updateTime_ != null) {
        output.writeMessage(4, getUpdateTime());
      }
      if (assignment_ != null) {
        output.writeMessage(6, getAssignment());
      }
      for (int i = 0; i < packages_.size(); i++) {
        output.writeMessage(7, packages_.get(i));
      }
      for (int i = 0; i < packageRepositories_.size(); i++) {
        output.writeMessage(8, packageRepositories_.get(i));
      }
      for (int i = 0; i < recipes_.size(); i++) {
        output.writeMessage(9, recipes_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(etag_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, etag_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
      }
      if (createTime_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getCreateTime());
      }
      if (updateTime_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getUpdateTime());
      }
      if (assignment_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getAssignment());
      }
      for (int i = 0; i < packages_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, packages_.get(i));
      }
      for (int i = 0; i < packageRepositories_.size(); i++) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                8, packageRepositories_.get(i));
      }
      for (int i = 0; i < recipes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, recipes_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(etag_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, etag_);
      }
      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 com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy) obj;

      if (!getName().equals(other.getName())) return false;
      if (!getDescription().equals(other.getDescription())) return false;
      if (hasCreateTime() != other.hasCreateTime()) return false;
      if (hasCreateTime()) {
        if (!getCreateTime().equals(other.getCreateTime())) return false;
      }
      if (hasUpdateTime() != other.hasUpdateTime()) return false;
      if (hasUpdateTime()) {
        if (!getUpdateTime().equals(other.getUpdateTime())) return false;
      }
      if (hasAssignment() != other.hasAssignment()) return false;
      if (hasAssignment()) {
        if (!getAssignment().equals(other.getAssignment())) return false;
      }
      if (!getPackagesList().equals(other.getPackagesList())) return false;
      if (!getPackageRepositoriesList().equals(other.getPackageRepositoriesList())) return false;
      if (!getRecipesList().equals(other.getRecipesList())) return false;
      if (!getEtag().equals(other.getEtag())) 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();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      if (hasCreateTime()) {
        hash = (37 * hash) + CREATE_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getCreateTime().hashCode();
      }
      if (hasUpdateTime()) {
        hash = (37 * hash) + UPDATE_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getUpdateTime().hashCode();
      }
      if (hasAssignment()) {
        hash = (37 * hash) + ASSIGNMENT_FIELD_NUMBER;
        hash = (53 * hash) + getAssignment().hashCode();
      }
      if (getPackagesCount() > 0) {
        hash = (37 * hash) + PACKAGES_FIELD_NUMBER;
        hash = (53 * hash) + getPackagesList().hashCode();
      }
      if (getPackageRepositoriesCount() > 0) {
        hash = (37 * hash) + PACKAGE_REPOSITORIES_FIELD_NUMBER;
        hash = (53 * hash) + getPackageRepositoriesList().hashCode();
      }
      if (getRecipesCount() > 0) {
        hash = (37 * hash) + RECIPES_FIELD_NUMBER;
        hash = (53 * hash) + getRecipesList().hashCode();
      }
      hash = (37 * hash) + ETAG_FIELD_NUMBER;
      hash = (53 * hash) + getEtag().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * An OS Config resource representing a guest configuration policy. These
     * policies represent the desired state for VM instance guest environments
     * including packages to install or remove, package repository configurations,
     * and software to install.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.GuestPolicy}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.GuestPolicy)
        com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_GuestPolicy_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_GuestPolicy_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder.class);
      }

      // Construct using com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        description_ = "";
        createTime_ = null;
        if (createTimeBuilder_ != null) {
          createTimeBuilder_.dispose();
          createTimeBuilder_ = null;
        }
        updateTime_ = null;
        if (updateTimeBuilder_ != null) {
          updateTimeBuilder_.dispose();
          updateTimeBuilder_ = null;
        }
        assignment_ = null;
        if (assignmentBuilder_ != null) {
          assignmentBuilder_.dispose();
          assignmentBuilder_ = null;
        }
        if (packagesBuilder_ == null) {
          packages_ = java.util.Collections.emptyList();
        } else {
          packages_ = null;
          packagesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (packageRepositoriesBuilder_ == null) {
          packageRepositories_ = java.util.Collections.emptyList();
        } else {
          packageRepositories_ = null;
          packageRepositoriesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (recipesBuilder_ == null) {
          recipes_ = java.util.Collections.emptyList();
        } else {
          recipes_ = null;
          recipesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        etag_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_GuestPolicy_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy result) {
        if (packagesBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            packages_ = java.util.Collections.unmodifiableList(packages_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.packages_ = packages_;
        } else {
          result.packages_ = packagesBuilder_.build();
        }
        if (packageRepositoriesBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            packageRepositories_ = java.util.Collections.unmodifiableList(packageRepositories_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.packageRepositories_ = packageRepositories_;
        } else {
          result.packageRepositories_ = packageRepositoriesBuilder_.build();
        }
        if (recipesBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            recipes_ = java.util.Collections.unmodifiableList(recipes_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.recipes_ = recipes_;
        } else {
          result.recipes_ = recipesBuilder_.build();
        }
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.description_ = description_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.createTime_ =
              createTimeBuilder_ == null ? createTime_ : createTimeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.updateTime_ =
              updateTimeBuilder_ == null ? updateTime_ : updateTimeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.assignment_ =
              assignmentBuilder_ == null ? assignment_ : assignmentBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.etag_ = etag_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy) {
          return mergeFrom((com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance())
          return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasCreateTime()) {
          mergeCreateTime(other.getCreateTime());
        }
        if (other.hasUpdateTime()) {
          mergeUpdateTime(other.getUpdateTime());
        }
        if (other.hasAssignment()) {
          mergeAssignment(other.getAssignment());
        }
        if (packagesBuilder_ == null) {
          if (!other.packages_.isEmpty()) {
            if (packages_.isEmpty()) {
              packages_ = other.packages_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensurePackagesIsMutable();
              packages_.addAll(other.packages_);
            }
            onChanged();
          }
        } else {
          if (!other.packages_.isEmpty()) {
            if (packagesBuilder_.isEmpty()) {
              packagesBuilder_.dispose();
              packagesBuilder_ = null;
              packages_ = other.packages_;
              bitField0_ = (bitField0_ & ~0x00000020);
              packagesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getPackagesFieldBuilder()
                      : null;
            } else {
              packagesBuilder_.addAllMessages(other.packages_);
            }
          }
        }
        if (packageRepositoriesBuilder_ == null) {
          if (!other.packageRepositories_.isEmpty()) {
            if (packageRepositories_.isEmpty()) {
              packageRepositories_ = other.packageRepositories_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensurePackageRepositoriesIsMutable();
              packageRepositories_.addAll(other.packageRepositories_);
            }
            onChanged();
          }
        } else {
          if (!other.packageRepositories_.isEmpty()) {
            if (packageRepositoriesBuilder_.isEmpty()) {
              packageRepositoriesBuilder_.dispose();
              packageRepositoriesBuilder_ = null;
              packageRepositories_ = other.packageRepositories_;
              bitField0_ = (bitField0_ & ~0x00000040);
              packageRepositoriesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getPackageRepositoriesFieldBuilder()
                      : null;
            } else {
              packageRepositoriesBuilder_.addAllMessages(other.packageRepositories_);
            }
          }
        }
        if (recipesBuilder_ == null) {
          if (!other.recipes_.isEmpty()) {
            if (recipes_.isEmpty()) {
              recipes_ = other.recipes_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureRecipesIsMutable();
              recipes_.addAll(other.recipes_);
            }
            onChanged();
          }
        } else {
          if (!other.recipes_.isEmpty()) {
            if (recipesBuilder_.isEmpty()) {
              recipesBuilder_.dispose();
              recipesBuilder_ = null;
              recipes_ = other.recipes_;
              bitField0_ = (bitField0_ & ~0x00000080);
              recipesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getRecipesFieldBuilder()
                      : null;
            } else {
              recipesBuilder_.addAllMessages(other.recipes_);
            }
          }
        }
        if (!other.getEtag().isEmpty()) {
          etag_ = other.etag_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10:
                {
                  name_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              case 18:
                {
                  description_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
              case 26:
                {
                  input.readMessage(getCreateTimeFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
              case 34:
                {
                  input.readMessage(getUpdateTimeFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000008;
                  break;
                } // case 34
              case 50:
                {
                  input.readMessage(getAssignmentFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000010;
                  break;
                } // case 50
              case 58:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Package m =
                      input.readMessage(
                          com.google.cloud.osconfig.v1beta.GuestPolicies.Package.parser(),
                          extensionRegistry);
                  if (packagesBuilder_ == null) {
                    ensurePackagesIsMutable();
                    packages_.add(m);
                  } else {
                    packagesBuilder_.addMessage(m);
                  }
                  break;
                } // case 58
              case 66:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository m =
                      input.readMessage(
                          com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.parser(),
                          extensionRegistry);
                  if (packageRepositoriesBuilder_ == null) {
                    ensurePackageRepositoriesIsMutable();
                    packageRepositories_.add(m);
                  } else {
                    packageRepositoriesBuilder_.addMessage(m);
                  }
                  break;
                } // case 66
              case 74:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe m =
                      input.readMessage(
                          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.parser(),
                          extensionRegistry);
                  if (recipesBuilder_ == null) {
                    ensureRecipesIsMutable();
                    recipes_.add(m);
                  } else {
                    recipesBuilder_.addMessage(m);
                  }
                  break;
                } // case 74
              case 82:
                {
                  etag_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000100;
                  break;
                } // case 82
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       *
       *
       * <pre>
       * Required. Unique name of the resource in this project using one of the following
       * forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Unique name of the resource in this project using one of the following
       * forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Unique name of the resource in this project using one of the following
       * forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Unique name of the resource in this project using one of the following
       * forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Unique name of the resource in this project using one of the following
       * forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
        }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object description_ = "";
      /**
       *
       *
       * <pre>
       * Description of the guest policy. Length of the description is limited
       * to 1024 characters.
       * </pre>
       *
       * <code>string description = 2;</code>
       *
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Description of the guest policy. Length of the description is limited
       * to 1024 characters.
       * </pre>
       *
       * <code>string description = 2;</code>
       *
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Description of the guest policy. Length of the description is limited
       * to 1024 characters.
       * </pre>
       *
       * <code>string description = 2;</code>
       *
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        description_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Description of the guest policy. Length of the description is limited
       * to 1024 characters.
       * </pre>
       *
       * <code>string description = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        description_ = getDefaultInstance().getDescription();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Description of the guest policy. Length of the description is limited
       * to 1024 characters.
       * </pre>
       *
       * <code>string description = 2;</code>
       *
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        description_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp createTime_;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp,
              com.google.protobuf.Timestamp.Builder,
              com.google.protobuf.TimestampOrBuilder>
          createTimeBuilder_;
      /**
       *
       *
       * <pre>
       * Output only. Time this guest policy was created.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       *
       * @return Whether the createTime field is set.
       */
      public boolean hasCreateTime() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       *
       *
       * <pre>
       * Output only. Time this guest policy was created.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       *
       * @return The createTime.
       */
      public com.google.protobuf.Timestamp getCreateTime() {
        if (createTimeBuilder_ == null) {
          return createTime_ == null
              ? com.google.protobuf.Timestamp.getDefaultInstance()
              : createTime_;
        } else {
          return createTimeBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Output only. Time this guest policy was created.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public Builder setCreateTime(com.google.protobuf.Timestamp value) {
        if (createTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          createTime_ = value;
        } else {
          createTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Output only. Time this guest policy was created.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public Builder setCreateTime(com.google.protobuf.Timestamp.Builder builderForValue) {
        if (createTimeBuilder_ == null) {
          createTime_ = builderForValue.build();
        } else {
          createTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Output only. Time this guest policy was created.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public Builder mergeCreateTime(com.google.protobuf.Timestamp value) {
        if (createTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)
              && createTime_ != null
              && createTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getCreateTimeBuilder().mergeFrom(value);
          } else {
            createTime_ = value;
          }
        } else {
          createTimeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Output only. Time this guest policy was created.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public Builder clearCreateTime() {
        bitField0_ = (bitField0_ & ~0x00000004);
        createTime_ = null;
        if (createTimeBuilder_ != null) {
          createTimeBuilder_.dispose();
          createTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Output only. Time this guest policy was created.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public com.google.protobuf.Timestamp.Builder getCreateTimeBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getCreateTimeFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Output only. Time this guest policy was created.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder() {
        if (createTimeBuilder_ != null) {
          return createTimeBuilder_.getMessageOrBuilder();
        } else {
          return createTime_ == null
              ? com.google.protobuf.Timestamp.getDefaultInstance()
              : createTime_;
        }
      }
      /**
       *
       *
       * <pre>
       * Output only. Time this guest policy was created.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp,
              com.google.protobuf.Timestamp.Builder,
              com.google.protobuf.TimestampOrBuilder>
          getCreateTimeFieldBuilder() {
        if (createTimeBuilder_ == null) {
          createTimeBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.protobuf.Timestamp,
                  com.google.protobuf.Timestamp.Builder,
                  com.google.protobuf.TimestampOrBuilder>(
                  getCreateTime(), getParentForChildren(), isClean());
          createTime_ = null;
        }
        return createTimeBuilder_;
      }

      private com.google.protobuf.Timestamp updateTime_;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp,
              com.google.protobuf.Timestamp.Builder,
              com.google.protobuf.TimestampOrBuilder>
          updateTimeBuilder_;
      /**
       *
       *
       * <pre>
       * Output only. Last time this guest policy was updated.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       *
       * @return Whether the updateTime field is set.
       */
      public boolean hasUpdateTime() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       *
       *
       * <pre>
       * Output only. Last time this guest policy was updated.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       *
       * @return The updateTime.
       */
      public com.google.protobuf.Timestamp getUpdateTime() {
        if (updateTimeBuilder_ == null) {
          return updateTime_ == null
              ? com.google.protobuf.Timestamp.getDefaultInstance()
              : updateTime_;
        } else {
          return updateTimeBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Output only. Last time this guest policy was updated.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public Builder setUpdateTime(com.google.protobuf.Timestamp value) {
        if (updateTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          updateTime_ = value;
        } else {
          updateTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Output only. Last time this guest policy was updated.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public Builder setUpdateTime(com.google.protobuf.Timestamp.Builder builderForValue) {
        if (updateTimeBuilder_ == null) {
          updateTime_ = builderForValue.build();
        } else {
          updateTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Output only. Last time this guest policy was updated.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public Builder mergeUpdateTime(com.google.protobuf.Timestamp value) {
        if (updateTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)
              && updateTime_ != null
              && updateTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getUpdateTimeBuilder().mergeFrom(value);
          } else {
            updateTime_ = value;
          }
        } else {
          updateTimeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Output only. Last time this guest policy was updated.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public Builder clearUpdateTime() {
        bitField0_ = (bitField0_ & ~0x00000008);
        updateTime_ = null;
        if (updateTimeBuilder_ != null) {
          updateTimeBuilder_.dispose();
          updateTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Output only. Last time this guest policy was updated.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public com.google.protobuf.Timestamp.Builder getUpdateTimeBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getUpdateTimeFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Output only. Last time this guest policy was updated.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      public com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder() {
        if (updateTimeBuilder_ != null) {
          return updateTimeBuilder_.getMessageOrBuilder();
        } else {
          return updateTime_ == null
              ? com.google.protobuf.Timestamp.getDefaultInstance()
              : updateTime_;
        }
      }
      /**
       *
       *
       * <pre>
       * Output only. Last time this guest policy was updated.
       * </pre>
       *
       * <code>
       * .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
       * </code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp,
              com.google.protobuf.Timestamp.Builder,
              com.google.protobuf.TimestampOrBuilder>
          getUpdateTimeFieldBuilder() {
        if (updateTimeBuilder_ == null) {
          updateTimeBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.protobuf.Timestamp,
                  com.google.protobuf.Timestamp.Builder,
                  com.google.protobuf.TimestampOrBuilder>(
                  getUpdateTime(), getParentForChildren(), isClean());
          updateTime_ = null;
        }
        return updateTimeBuilder_;
      }

      private com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment assignment_;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.AssignmentOrBuilder>
          assignmentBuilder_;
      /**
       *
       *
       * <pre>
       * Required. Specifies the VM instances that are assigned to this policy. This allows
       * you to target sets or groups of VM instances by different parameters such
       * as labels, names, OS, or zones.
       * If left empty, all VM instances underneath this policy are targeted.
       * At the same level in the resource hierarchy (that is within a project), the
       * service prevents the creation of multiple policies that conflict with
       * each other. For more information, see how the service [handles assignment
       * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       *
       * @return Whether the assignment field is set.
       */
      public boolean hasAssignment() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       *
       *
       * <pre>
       * Required. Specifies the VM instances that are assigned to this policy. This allows
       * you to target sets or groups of VM instances by different parameters such
       * as labels, names, OS, or zones.
       * If left empty, all VM instances underneath this policy are targeted.
       * At the same level in the resource hierarchy (that is within a project), the
       * service prevents the creation of multiple policies that conflict with
       * each other. For more information, see how the service [handles assignment
       * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       *
       * @return The assignment.
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment getAssignment() {
        if (assignmentBuilder_ == null) {
          return assignment_ == null
              ? com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.getDefaultInstance()
              : assignment_;
        } else {
          return assignmentBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Specifies the VM instances that are assigned to this policy. This allows
       * you to target sets or groups of VM instances by different parameters such
       * as labels, names, OS, or zones.
       * If left empty, all VM instances underneath this policy are targeted.
       * At the same level in the resource hierarchy (that is within a project), the
       * service prevents the creation of multiple policies that conflict with
       * each other. For more information, see how the service [handles assignment
       * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder setAssignment(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment value) {
        if (assignmentBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          assignment_ = value;
        } else {
          assignmentBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Specifies the VM instances that are assigned to this policy. This allows
       * you to target sets or groups of VM instances by different parameters such
       * as labels, names, OS, or zones.
       * If left empty, all VM instances underneath this policy are targeted.
       * At the same level in the resource hierarchy (that is within a project), the
       * service prevents the creation of multiple policies that conflict with
       * each other. For more information, see how the service [handles assignment
       * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder setAssignment(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.Builder builderForValue) {
        if (assignmentBuilder_ == null) {
          assignment_ = builderForValue.build();
        } else {
          assignmentBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Specifies the VM instances that are assigned to this policy. This allows
       * you to target sets or groups of VM instances by different parameters such
       * as labels, names, OS, or zones.
       * If left empty, all VM instances underneath this policy are targeted.
       * At the same level in the resource hierarchy (that is within a project), the
       * service prevents the creation of multiple policies that conflict with
       * each other. For more information, see how the service [handles assignment
       * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder mergeAssignment(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment value) {
        if (assignmentBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)
              && assignment_ != null
              && assignment_
                  != com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment
                      .getDefaultInstance()) {
            getAssignmentBuilder().mergeFrom(value);
          } else {
            assignment_ = value;
          }
        } else {
          assignmentBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Specifies the VM instances that are assigned to this policy. This allows
       * you to target sets or groups of VM instances by different parameters such
       * as labels, names, OS, or zones.
       * If left empty, all VM instances underneath this policy are targeted.
       * At the same level in the resource hierarchy (that is within a project), the
       * service prevents the creation of multiple policies that conflict with
       * each other. For more information, see how the service [handles assignment
       * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder clearAssignment() {
        bitField0_ = (bitField0_ & ~0x00000010);
        assignment_ = null;
        if (assignmentBuilder_ != null) {
          assignmentBuilder_.dispose();
          assignmentBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Specifies the VM instances that are assigned to this policy. This allows
       * you to target sets or groups of VM instances by different parameters such
       * as labels, names, OS, or zones.
       * If left empty, all VM instances underneath this policy are targeted.
       * At the same level in the resource hierarchy (that is within a project), the
       * service prevents the creation of multiple policies that conflict with
       * each other. For more information, see how the service [handles assignment
       * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.Builder
          getAssignmentBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getAssignmentFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Required. Specifies the VM instances that are assigned to this policy. This allows
       * you to target sets or groups of VM instances by different parameters such
       * as labels, names, OS, or zones.
       * If left empty, all VM instances underneath this policy are targeted.
       * At the same level in the resource hierarchy (that is within a project), the
       * service prevents the creation of multiple policies that conflict with
       * each other. For more information, see how the service [handles assignment
       * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.AssignmentOrBuilder
          getAssignmentOrBuilder() {
        if (assignmentBuilder_ != null) {
          return assignmentBuilder_.getMessageOrBuilder();
        } else {
          return assignment_ == null
              ? com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.getDefaultInstance()
              : assignment_;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Specifies the VM instances that are assigned to this policy. This allows
       * you to target sets or groups of VM instances by different parameters such
       * as labels, names, OS, or zones.
       * If left empty, all VM instances underneath this policy are targeted.
       * At the same level in the resource hierarchy (that is within a project), the
       * service prevents the creation of multiple policies that conflict with
       * each other. For more information, see how the service [handles assignment
       * conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts).
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.Assignment assignment = 6 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.AssignmentOrBuilder>
          getAssignmentFieldBuilder() {
        if (assignmentBuilder_ == null) {
          assignmentBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.AssignmentOrBuilder>(
                  getAssignment(), getParentForChildren(), isClean());
          assignment_ = null;
        }
        return assignmentBuilder_;
      }

      private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Package> packages_ =
          java.util.Collections.emptyList();

      private void ensurePackagesIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          packages_ =
              new java.util.ArrayList<com.google.cloud.osconfig.v1beta.GuestPolicies.Package>(
                  packages_);
          bitField0_ |= 0x00000020;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.Package,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder>
          packagesBuilder_;

      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Package>
          getPackagesList() {
        if (packagesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(packages_);
        } else {
          return packagesBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public int getPackagesCount() {
        if (packagesBuilder_ == null) {
          return packages_.size();
        } else {
          return packagesBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Package getPackages(int index) {
        if (packagesBuilder_ == null) {
          return packages_.get(index);
        } else {
          return packagesBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public Builder setPackages(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.Package value) {
        if (packagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackagesIsMutable();
          packages_.set(index, value);
          onChanged();
        } else {
          packagesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public Builder setPackages(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder builderForValue) {
        if (packagesBuilder_ == null) {
          ensurePackagesIsMutable();
          packages_.set(index, builderForValue.build());
          onChanged();
        } else {
          packagesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public Builder addPackages(com.google.cloud.osconfig.v1beta.GuestPolicies.Package value) {
        if (packagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackagesIsMutable();
          packages_.add(value);
          onChanged();
        } else {
          packagesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public Builder addPackages(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.Package value) {
        if (packagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackagesIsMutable();
          packages_.add(index, value);
          onChanged();
        } else {
          packagesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public Builder addPackages(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder builderForValue) {
        if (packagesBuilder_ == null) {
          ensurePackagesIsMutable();
          packages_.add(builderForValue.build());
          onChanged();
        } else {
          packagesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public Builder addPackages(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder builderForValue) {
        if (packagesBuilder_ == null) {
          ensurePackagesIsMutable();
          packages_.add(index, builderForValue.build());
          onChanged();
        } else {
          packagesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public Builder addAllPackages(
          java.lang.Iterable<? extends com.google.cloud.osconfig.v1beta.GuestPolicies.Package>
              values) {
        if (packagesBuilder_ == null) {
          ensurePackagesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packages_);
          onChanged();
        } else {
          packagesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public Builder clearPackages() {
        if (packagesBuilder_ == null) {
          packages_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          packagesBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public Builder removePackages(int index) {
        if (packagesBuilder_ == null) {
          ensurePackagesIsMutable();
          packages_.remove(index);
          onChanged();
        } else {
          packagesBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder getPackagesBuilder(
          int index) {
        return getPackagesFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder getPackagesOrBuilder(
          int index) {
        if (packagesBuilder_ == null) {
          return packages_.get(index);
        } else {
          return packagesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public java.util.List<
              ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder>
          getPackagesOrBuilderList() {
        if (packagesBuilder_ != null) {
          return packagesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(packages_);
        }
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder addPackagesBuilder() {
        return getPackagesFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.Package.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder addPackagesBuilder(
          int index) {
        return getPackagesFieldBuilder()
            .addBuilder(
                index, com.google.cloud.osconfig.v1beta.GuestPolicies.Package.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * The software packages to be managed by this policy.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Package packages = 7;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder>
          getPackagesBuilderList() {
        return getPackagesFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.Package,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder>
          getPackagesFieldBuilder() {
        if (packagesBuilder_ == null) {
          packagesBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Package,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder>(
                  packages_, ((bitField0_ & 0x00000020) != 0), getParentForChildren(), isClean());
          packages_ = null;
        }
        return packagesBuilder_;
      }

      private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository>
          packageRepositories_ = java.util.Collections.emptyList();

      private void ensurePackageRepositoriesIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          packageRepositories_ =
              new java.util.ArrayList<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository>(
                  packageRepositories_);
          bitField0_ |= 0x00000040;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder>
          packageRepositoriesBuilder_;

      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository>
          getPackageRepositoriesList() {
        if (packageRepositoriesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(packageRepositories_);
        } else {
          return packageRepositoriesBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public int getPackageRepositoriesCount() {
        if (packageRepositoriesBuilder_ == null) {
          return packageRepositories_.size();
        } else {
          return packageRepositoriesBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
          getPackageRepositories(int index) {
        if (packageRepositoriesBuilder_ == null) {
          return packageRepositories_.get(index);
        } else {
          return packageRepositoriesBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public Builder setPackageRepositories(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository value) {
        if (packageRepositoriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.set(index, value);
          onChanged();
        } else {
          packageRepositoriesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public Builder setPackageRepositories(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder
              builderForValue) {
        if (packageRepositoriesBuilder_ == null) {
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.set(index, builderForValue.build());
          onChanged();
        } else {
          packageRepositoriesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public Builder addPackageRepositories(
          com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository value) {
        if (packageRepositoriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.add(value);
          onChanged();
        } else {
          packageRepositoriesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public Builder addPackageRepositories(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository value) {
        if (packageRepositoriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.add(index, value);
          onChanged();
        } else {
          packageRepositoriesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public Builder addPackageRepositories(
          com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder
              builderForValue) {
        if (packageRepositoriesBuilder_ == null) {
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.add(builderForValue.build());
          onChanged();
        } else {
          packageRepositoriesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public Builder addPackageRepositories(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder
              builderForValue) {
        if (packageRepositoriesBuilder_ == null) {
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.add(index, builderForValue.build());
          onChanged();
        } else {
          packageRepositoriesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public Builder addAllPackageRepositories(
          java.lang.Iterable<
                  ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository>
              values) {
        if (packageRepositoriesBuilder_ == null) {
          ensurePackageRepositoriesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packageRepositories_);
          onChanged();
        } else {
          packageRepositoriesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public Builder clearPackageRepositories() {
        if (packageRepositoriesBuilder_ == null) {
          packageRepositories_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          packageRepositoriesBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public Builder removePackageRepositories(int index) {
        if (packageRepositoriesBuilder_ == null) {
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.remove(index);
          onChanged();
        } else {
          packageRepositoriesBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder
          getPackageRepositoriesBuilder(int index) {
        return getPackageRepositoriesFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder
          getPackageRepositoriesOrBuilder(int index) {
        if (packageRepositoriesBuilder_ == null) {
          return packageRepositories_.get(index);
        } else {
          return packageRepositoriesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public java.util.List<
              ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder>
          getPackageRepositoriesOrBuilderList() {
        if (packageRepositoriesBuilder_ != null) {
          return packageRepositoriesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(packageRepositories_);
        }
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder
          addPackageRepositoriesBuilder() {
        return getPackageRepositoriesFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder
          addPackageRepositoriesBuilder(int index) {
        return getPackageRepositoriesFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * A list of package repositories to configure on the VM instance. This is
       * done before any other configs are applied so they can use these repos.
       * Package repositories are only configured if the corresponding package
       * manager(s) are available.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.PackageRepository package_repositories = 8;
       * </code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder>
          getPackageRepositoriesBuilderList() {
        return getPackageRepositoriesFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder>
          getPackageRepositoriesFieldBuilder() {
        if (packageRepositoriesBuilder_ == null) {
          packageRepositoriesBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder>(
                  packageRepositories_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          packageRepositories_ = null;
        }
        return packageRepositoriesBuilder_;
      }

      private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe>
          recipes_ = java.util.Collections.emptyList();

      private void ensureRecipesIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          recipes_ =
              new java.util.ArrayList<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe>(recipes_);
          bitField0_ |= 0x00000080;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder>
          recipesBuilder_;

      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe>
          getRecipesList() {
        if (recipesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(recipes_);
        } else {
          return recipesBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public int getRecipesCount() {
        if (recipesBuilder_ == null) {
          return recipes_.size();
        } else {
          return recipesBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe getRecipes(int index) {
        if (recipesBuilder_ == null) {
          return recipes_.get(index);
        } else {
          return recipesBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public Builder setRecipes(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe value) {
        if (recipesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRecipesIsMutable();
          recipes_.set(index, value);
          onChanged();
        } else {
          recipesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public Builder setRecipes(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder builderForValue) {
        if (recipesBuilder_ == null) {
          ensureRecipesIsMutable();
          recipes_.set(index, builderForValue.build());
          onChanged();
        } else {
          recipesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public Builder addRecipes(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe value) {
        if (recipesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRecipesIsMutable();
          recipes_.add(value);
          onChanged();
        } else {
          recipesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public Builder addRecipes(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe value) {
        if (recipesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRecipesIsMutable();
          recipes_.add(index, value);
          onChanged();
        } else {
          recipesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public Builder addRecipes(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder builderForValue) {
        if (recipesBuilder_ == null) {
          ensureRecipesIsMutable();
          recipes_.add(builderForValue.build());
          onChanged();
        } else {
          recipesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public Builder addRecipes(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder builderForValue) {
        if (recipesBuilder_ == null) {
          ensureRecipesIsMutable();
          recipes_.add(index, builderForValue.build());
          onChanged();
        } else {
          recipesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public Builder addAllRecipes(
          java.lang.Iterable<
                  ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe>
              values) {
        if (recipesBuilder_ == null) {
          ensureRecipesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, recipes_);
          onChanged();
        } else {
          recipesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public Builder clearRecipes() {
        if (recipesBuilder_ == null) {
          recipes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          recipesBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public Builder removeRecipes(int index) {
        if (recipesBuilder_ == null) {
          ensureRecipesIsMutable();
          recipes_.remove(index);
          onChanged();
        } else {
          recipesBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder
          getRecipesBuilder(int index) {
        return getRecipesFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder
          getRecipesOrBuilder(int index) {
        if (recipesBuilder_ == null) {
          return recipes_.get(index);
        } else {
          return recipesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public java.util.List<
              ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder>
          getRecipesOrBuilderList() {
        if (recipesBuilder_ != null) {
          return recipesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(recipes_);
        }
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder
          addRecipesBuilder() {
        return getRecipesFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder
          addRecipesBuilder(int index) {
        return getRecipesFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * A list of Recipes to install on the VM instance.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe recipes = 9;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder>
          getRecipesBuilderList() {
        return getRecipesFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder>
          getRecipesFieldBuilder() {
        if (recipesBuilder_ == null) {
          recipesBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder>(
                  recipes_, ((bitField0_ & 0x00000080) != 0), getParentForChildren(), isClean());
          recipes_ = null;
        }
        return recipesBuilder_;
      }

      private java.lang.Object etag_ = "";
      /**
       *
       *
       * <pre>
       * The etag for this guest policy.
       * If this is provided on update, it must match the server's etag.
       * </pre>
       *
       * <code>string etag = 10;</code>
       *
       * @return The etag.
       */
      public java.lang.String getEtag() {
        java.lang.Object ref = etag_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          etag_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * The etag for this guest policy.
       * If this is provided on update, it must match the server's etag.
       * </pre>
       *
       * <code>string etag = 10;</code>
       *
       * @return The bytes for etag.
       */
      public com.google.protobuf.ByteString getEtagBytes() {
        java.lang.Object ref = etag_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          etag_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * The etag for this guest policy.
       * If this is provided on update, it must match the server's etag.
       * </pre>
       *
       * <code>string etag = 10;</code>
       *
       * @param value The etag to set.
       * @return This builder for chaining.
       */
      public Builder setEtag(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        etag_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The etag for this guest policy.
       * If this is provided on update, it must match the server's etag.
       * </pre>
       *
       * <code>string etag = 10;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearEtag() {
        etag_ = getDefaultInstance().getEtag();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The etag for this guest policy.
       * If this is provided on update, it must match the server's etag.
       * </pre>
       *
       * <code>string etag = 10;</code>
       *
       * @param value The bytes for etag to set.
       * @return This builder for chaining.
       */
      public Builder setEtagBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        etag_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.GuestPolicy)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.GuestPolicy)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface AssignmentOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.Assignment)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Targets instances matching at least one of these label sets. This allows
     * an assignment to target disparate groups, for example "env=prod or
     * env=staging".
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
     */
    java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel>
        getGroupLabelsList();
    /**
     *
     *
     * <pre>
     * Targets instances matching at least one of these label sets. This allows
     * an assignment to target disparate groups, for example "env=prod or
     * env=staging".
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel getGroupLabels(int index);
    /**
     *
     *
     * <pre>
     * Targets instances matching at least one of these label sets. This allows
     * an assignment to target disparate groups, for example "env=prod or
     * env=staging".
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
     */
    int getGroupLabelsCount();
    /**
     *
     *
     * <pre>
     * Targets instances matching at least one of these label sets. This allows
     * an assignment to target disparate groups, for example "env=prod or
     * env=staging".
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
     */
    java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabelOrBuilder>
        getGroupLabelsOrBuilderList();
    /**
     *
     *
     * <pre>
     * Targets instances matching at least one of these label sets. This allows
     * an assignment to target disparate groups, for example "env=prod or
     * env=staging".
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabelOrBuilder
        getGroupLabelsOrBuilder(int index);

    /**
     *
     *
     * <pre>
     * Targets instances in any of these zones. Leave empty to target instances
     * in any zone.
     * Zonal targeting is uncommon and is supported to facilitate the management
     * of changes by zone.
     * </pre>
     *
     * <code>repeated string zones = 2;</code>
     *
     * @return A list containing the zones.
     */
    java.util.List<java.lang.String> getZonesList();
    /**
     *
     *
     * <pre>
     * Targets instances in any of these zones. Leave empty to target instances
     * in any zone.
     * Zonal targeting is uncommon and is supported to facilitate the management
     * of changes by zone.
     * </pre>
     *
     * <code>repeated string zones = 2;</code>
     *
     * @return The count of zones.
     */
    int getZonesCount();
    /**
     *
     *
     * <pre>
     * Targets instances in any of these zones. Leave empty to target instances
     * in any zone.
     * Zonal targeting is uncommon and is supported to facilitate the management
     * of changes by zone.
     * </pre>
     *
     * <code>repeated string zones = 2;</code>
     *
     * @param index The index of the element to return.
     * @return The zones at the given index.
     */
    java.lang.String getZones(int index);
    /**
     *
     *
     * <pre>
     * Targets instances in any of these zones. Leave empty to target instances
     * in any zone.
     * Zonal targeting is uncommon and is supported to facilitate the management
     * of changes by zone.
     * </pre>
     *
     * <code>repeated string zones = 2;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the zones at the given index.
     */
    com.google.protobuf.ByteString getZonesBytes(int index);

    /**
     *
     *
     * <pre>
     * Targets any of the instances specified. Instances are specified by their
     * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
     * Instance targeting is uncommon and is supported to facilitate the
     * management of changes by the instance or to target specific VM instances
     * for development and testing.
     * Only supported for project-level policies and must reference instances
     * within this project.
     * </pre>
     *
     * <code>repeated string instances = 3;</code>
     *
     * @return A list containing the instances.
     */
    java.util.List<java.lang.String> getInstancesList();
    /**
     *
     *
     * <pre>
     * Targets any of the instances specified. Instances are specified by their
     * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
     * Instance targeting is uncommon and is supported to facilitate the
     * management of changes by the instance or to target specific VM instances
     * for development and testing.
     * Only supported for project-level policies and must reference instances
     * within this project.
     * </pre>
     *
     * <code>repeated string instances = 3;</code>
     *
     * @return The count of instances.
     */
    int getInstancesCount();
    /**
     *
     *
     * <pre>
     * Targets any of the instances specified. Instances are specified by their
     * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
     * Instance targeting is uncommon and is supported to facilitate the
     * management of changes by the instance or to target specific VM instances
     * for development and testing.
     * Only supported for project-level policies and must reference instances
     * within this project.
     * </pre>
     *
     * <code>repeated string instances = 3;</code>
     *
     * @param index The index of the element to return.
     * @return The instances at the given index.
     */
    java.lang.String getInstances(int index);
    /**
     *
     *
     * <pre>
     * Targets any of the instances specified. Instances are specified by their
     * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
     * Instance targeting is uncommon and is supported to facilitate the
     * management of changes by the instance or to target specific VM instances
     * for development and testing.
     * Only supported for project-level policies and must reference instances
     * within this project.
     * </pre>
     *
     * <code>repeated string instances = 3;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the instances at the given index.
     */
    com.google.protobuf.ByteString getInstancesBytes(int index);

    /**
     *
     *
     * <pre>
     * Targets VM instances whose name starts with one of these prefixes.
     * Like labels, this is another way to group VM instances when targeting
     * configs, for example prefix="prod-".
     * Only supported for project-level policies.
     * </pre>
     *
     * <code>repeated string instance_name_prefixes = 4;</code>
     *
     * @return A list containing the instanceNamePrefixes.
     */
    java.util.List<java.lang.String> getInstanceNamePrefixesList();
    /**
     *
     *
     * <pre>
     * Targets VM instances whose name starts with one of these prefixes.
     * Like labels, this is another way to group VM instances when targeting
     * configs, for example prefix="prod-".
     * Only supported for project-level policies.
     * </pre>
     *
     * <code>repeated string instance_name_prefixes = 4;</code>
     *
     * @return The count of instanceNamePrefixes.
     */
    int getInstanceNamePrefixesCount();
    /**
     *
     *
     * <pre>
     * Targets VM instances whose name starts with one of these prefixes.
     * Like labels, this is another way to group VM instances when targeting
     * configs, for example prefix="prod-".
     * Only supported for project-level policies.
     * </pre>
     *
     * <code>repeated string instance_name_prefixes = 4;</code>
     *
     * @param index The index of the element to return.
     * @return The instanceNamePrefixes at the given index.
     */
    java.lang.String getInstanceNamePrefixes(int index);
    /**
     *
     *
     * <pre>
     * Targets VM instances whose name starts with one of these prefixes.
     * Like labels, this is another way to group VM instances when targeting
     * configs, for example prefix="prod-".
     * Only supported for project-level policies.
     * </pre>
     *
     * <code>repeated string instance_name_prefixes = 4;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the instanceNamePrefixes at the given index.
     */
    com.google.protobuf.ByteString getInstanceNamePrefixesBytes(int index);

    /**
     *
     *
     * <pre>
     * Targets VM instances matching at least one of the following OS types.
     * VM instances must match all supplied criteria for a given OsType to be
     * included.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
     */
    java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType>
        getOsTypesList();
    /**
     *
     *
     * <pre>
     * Targets VM instances matching at least one of the following OS types.
     * VM instances must match all supplied criteria for a given OsType to be
     * included.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType getOsTypes(int index);
    /**
     *
     *
     * <pre>
     * Targets VM instances matching at least one of the following OS types.
     * VM instances must match all supplied criteria for a given OsType to be
     * included.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
     */
    int getOsTypesCount();
    /**
     *
     *
     * <pre>
     * Targets VM instances matching at least one of the following OS types.
     * VM instances must match all supplied criteria for a given OsType to be
     * included.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
     */
    java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsTypeOrBuilder>
        getOsTypesOrBuilderList();
    /**
     *
     *
     * <pre>
     * Targets VM instances matching at least one of the following OS types.
     * VM instances must match all supplied criteria for a given OsType to be
     * included.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsTypeOrBuilder getOsTypesOrBuilder(
        int index);
  }
  /**
   *
   *
   * <pre>
   * An assignment represents the group or groups of VM instances that the policy
   * applies to.
   * If an assignment is empty, it applies to all VM instances. Otherwise, the
   * targeted VM instances must meet all the criteria specified. So if both
   * labels and zones are specified, the policy applies to VM instances with those
   * labels and in those zones.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.Assignment}
   */
  public static final class Assignment extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.Assignment)
      AssignmentOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Assignment.newBuilder() to construct.
    private Assignment(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private Assignment() {
      groupLabels_ = java.util.Collections.emptyList();
      zones_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      instances_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      instanceNamePrefixes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      osTypes_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new Assignment();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_Assignment_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_Assignment_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.Builder.class);
    }

    public interface GroupLabelOrBuilder
        extends
        // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.Assignment.GroupLabel)
        com.google.protobuf.MessageOrBuilder {

      /**
       *
       *
       * <pre>
       * Google Compute Engine instance labels that must be present for an
       * instance to be included in this assignment group.
       * </pre>
       *
       * <code>map&lt;string, string&gt; labels = 1;</code>
       */
      int getLabelsCount();
      /**
       *
       *
       * <pre>
       * Google Compute Engine instance labels that must be present for an
       * instance to be included in this assignment group.
       * </pre>
       *
       * <code>map&lt;string, string&gt; labels = 1;</code>
       */
      boolean containsLabels(java.lang.String key);
      /** Use {@link #getLabelsMap()} instead. */
      @java.lang.Deprecated
      java.util.Map<java.lang.String, java.lang.String> getLabels();
      /**
       *
       *
       * <pre>
       * Google Compute Engine instance labels that must be present for an
       * instance to be included in this assignment group.
       * </pre>
       *
       * <code>map&lt;string, string&gt; labels = 1;</code>
       */
      java.util.Map<java.lang.String, java.lang.String> getLabelsMap();
      /**
       *
       *
       * <pre>
       * Google Compute Engine instance labels that must be present for an
       * instance to be included in this assignment group.
       * </pre>
       *
       * <code>map&lt;string, string&gt; labels = 1;</code>
       */
      /* nullable */
      java.lang.String getLabelsOrDefault(
          java.lang.String key,
          /* nullable */
          java.lang.String defaultValue);
      /**
       *
       *
       * <pre>
       * Google Compute Engine instance labels that must be present for an
       * instance to be included in this assignment group.
       * </pre>
       *
       * <code>map&lt;string, string&gt; labels = 1;</code>
       */
      java.lang.String getLabelsOrThrow(java.lang.String key);
    }
    /**
     *
     *
     * <pre>
     * Represents a group of VM intances that can be identified as having all
     * these labels, for example "env=prod and app=web".
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.Assignment.GroupLabel}
     */
    public static final class GroupLabel extends com.google.protobuf.GeneratedMessageV3
        implements
        // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.Assignment.GroupLabel)
        GroupLabelOrBuilder {
      private static final long serialVersionUID = 0L;
      // Use GroupLabel.newBuilder() to construct.
      private GroupLabel(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }

      private GroupLabel() {}

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
        return new GroupLabel();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
        return this.unknownFields;
      }

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      @java.lang.Override
      protected com.google.protobuf.MapField internalGetMapField(int number) {
        switch (number) {
          case 1:
            return internalGetLabels();
          default:
            throw new RuntimeException("Invalid map field number: " + number);
        }
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder.class);
      }

      public static final int LABELS_FIELD_NUMBER = 1;

      private static final class LabelsDefaultEntryHolder {
        static final com.google.protobuf.MapEntry<java.lang.String, java.lang.String> defaultEntry =
            com.google.protobuf.MapEntry.<java.lang.String, java.lang.String>newDefaultInstance(
                com.google.cloud.osconfig.v1beta.GuestPolicies
                    .internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_LabelsEntry_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> labels_;

      private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetLabels() {
        if (labels_ == null) {
          return com.google.protobuf.MapField.emptyMapField(LabelsDefaultEntryHolder.defaultEntry);
        }
        return labels_;
      }

      public int getLabelsCount() {
        return internalGetLabels().getMap().size();
      }
      /**
       *
       *
       * <pre>
       * Google Compute Engine instance labels that must be present for an
       * instance to be included in this assignment group.
       * </pre>
       *
       * <code>map&lt;string, string&gt; labels = 1;</code>
       */
      @java.lang.Override
      public boolean containsLabels(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        return internalGetLabels().getMap().containsKey(key);
      }
      /** Use {@link #getLabelsMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getLabels() {
        return getLabelsMap();
      }
      /**
       *
       *
       * <pre>
       * Google Compute Engine instance labels that must be present for an
       * instance to be included in this assignment group.
       * </pre>
       *
       * <code>map&lt;string, string&gt; labels = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
        return internalGetLabels().getMap();
      }
      /**
       *
       *
       * <pre>
       * Google Compute Engine instance labels that must be present for an
       * instance to be included in this assignment group.
       * </pre>
       *
       * <code>map&lt;string, string&gt; labels = 1;</code>
       */
      @java.lang.Override
      public /* nullable */ java.lang.String getLabelsOrDefault(
          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 = internalGetLabels().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       *
       *
       * <pre>
       * Google Compute Engine instance labels that must be present for an
       * instance to be included in this assignment group.
       * </pre>
       *
       * <code>map&lt;string, string&gt; labels = 1;</code>
       */
      @java.lang.Override
      public java.lang.String getLabelsOrThrow(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      private byte memoizedIsInitialized = -1;

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
        com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
            output, internalGetLabels(), LabelsDefaultEntryHolder.defaultEntry, 1);
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        for (java.util.Map.Entry<java.lang.String, java.lang.String> entry :
            internalGetLabels().getMap().entrySet()) {
          com.google.protobuf.MapEntry<java.lang.String, java.lang.String> labels__ =
              LabelsDefaultEntryHolder.defaultEntry
                  .newBuilderForType()
                  .setKey(entry.getKey())
                  .setValue(entry.getValue())
                  .build();
          size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, labels__);
        }
        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 com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel)) {
          return super.equals(obj);
        }
        com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel other =
            (com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel) obj;

        if (!internalGetLabels().equals(other.internalGetLabels())) 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 (!internalGetLabels().getMap().isEmpty()) {
          hash = (37 * hash) + LABELS_FIELD_NUMBER;
          hash = (53 * hash) + internalGetLabels().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel parseFrom(
          java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel parseFrom(
          java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel parseFrom(
          byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel parseFrom(
          byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel parseFrom(
          java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel parseFrom(
          java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
          parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
          parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel parseFrom(
          com.google.protobuf.CodedInputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() {
        return newBuilder();
      }

      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }

      public static Builder newBuilder(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel 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.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       *
       *
       * <pre>
       * Represents a group of VM intances that can be identified as having all
       * these labels, for example "env=prod and app=web".
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.Assignment.GroupLabel}
       */
      public static final class Builder
          extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
          implements
          // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.Assignment.GroupLabel)
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabelOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_descriptor;
        }

        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(int number) {
          switch (number) {
            case 1:
              return internalGetLabels();
            default:
              throw new RuntimeException("Invalid map field number: " + number);
          }
        }

        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMutableMapField(int number) {
          switch (number) {
            case 1:
              return internalGetMutableLabels();
            default:
              throw new RuntimeException("Invalid map field number: " + number);
          }
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder
                      .class);
        }

        // Construct using
        // com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.newBuilder()
        private Builder() {}

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

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

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_descriptor;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
            getDefaultInstanceForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
              .getDefaultInstance();
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel build() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel result =
              buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel buildPartial() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel result =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel(this);
          if (bitField0_ != 0) {
            buildPartial0(result);
          }
          onBuilt();
          return result;
        }

        private void buildPartial0(
            com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.labels_ = internalGetLabels();
            result.labels_.makeImmutable();
          }
        }

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

        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.setField(field, value);
        }

        @java.lang.Override
        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }

        @java.lang.Override
        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }

        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index,
            java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }

        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other
              instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel) {
            return mergeFrom(
                (com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel) other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(
            com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel other) {
          if (other
              == com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
                  .getDefaultInstance()) return this;
          internalGetMutableLabels().mergeFrom(other.internalGetLabels());
          bitField0_ |= 0x00000001;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

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

        private int bitField0_;

        private com.google.protobuf.MapField<java.lang.String, java.lang.String> labels_;

        private com.google.protobuf.MapField<java.lang.String, java.lang.String>
            internalGetLabels() {
          if (labels_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                LabelsDefaultEntryHolder.defaultEntry);
          }
          return labels_;
        }

        private com.google.protobuf.MapField<java.lang.String, java.lang.String>
            internalGetMutableLabels() {
          if (labels_ == null) {
            labels_ =
                com.google.protobuf.MapField.newMapField(LabelsDefaultEntryHolder.defaultEntry);
          }
          if (!labels_.isMutable()) {
            labels_ = labels_.copy();
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return labels_;
        }

        public int getLabelsCount() {
          return internalGetLabels().getMap().size();
        }
        /**
         *
         *
         * <pre>
         * Google Compute Engine instance labels that must be present for an
         * instance to be included in this assignment group.
         * </pre>
         *
         * <code>map&lt;string, string&gt; labels = 1;</code>
         */
        @java.lang.Override
        public boolean containsLabels(java.lang.String key) {
          if (key == null) {
            throw new NullPointerException("map key");
          }
          return internalGetLabels().getMap().containsKey(key);
        }
        /** Use {@link #getLabelsMap()} instead. */
        @java.lang.Override
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, java.lang.String> getLabels() {
          return getLabelsMap();
        }
        /**
         *
         *
         * <pre>
         * Google Compute Engine instance labels that must be present for an
         * instance to be included in this assignment group.
         * </pre>
         *
         * <code>map&lt;string, string&gt; labels = 1;</code>
         */
        @java.lang.Override
        public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
          return internalGetLabels().getMap();
        }
        /**
         *
         *
         * <pre>
         * Google Compute Engine instance labels that must be present for an
         * instance to be included in this assignment group.
         * </pre>
         *
         * <code>map&lt;string, string&gt; labels = 1;</code>
         */
        @java.lang.Override
        public /* nullable */ java.lang.String getLabelsOrDefault(
            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 = internalGetLabels().getMap();
          return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         *
         *
         * <pre>
         * Google Compute Engine instance labels that must be present for an
         * instance to be included in this assignment group.
         * </pre>
         *
         * <code>map&lt;string, string&gt; labels = 1;</code>
         */
        @java.lang.Override
        public java.lang.String getLabelsOrThrow(java.lang.String key) {
          if (key == null) {
            throw new NullPointerException("map key");
          }
          java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
          if (!map.containsKey(key)) {
            throw new java.lang.IllegalArgumentException();
          }
          return map.get(key);
        }

        public Builder clearLabels() {
          bitField0_ = (bitField0_ & ~0x00000001);
          internalGetMutableLabels().getMutableMap().clear();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Google Compute Engine instance labels that must be present for an
         * instance to be included in this assignment group.
         * </pre>
         *
         * <code>map&lt;string, string&gt; labels = 1;</code>
         */
        public Builder removeLabels(java.lang.String key) {
          if (key == null) {
            throw new NullPointerException("map key");
          }
          internalGetMutableLabels().getMutableMap().remove(key);
          return this;
        }
        /** Use alternate mutation accessors instead. */
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, java.lang.String> getMutableLabels() {
          bitField0_ |= 0x00000001;
          return internalGetMutableLabels().getMutableMap();
        }
        /**
         *
         *
         * <pre>
         * Google Compute Engine instance labels that must be present for an
         * instance to be included in this assignment group.
         * </pre>
         *
         * <code>map&lt;string, string&gt; labels = 1;</code>
         */
        public Builder putLabels(java.lang.String key, java.lang.String value) {
          if (key == null) {
            throw new NullPointerException("map key");
          }
          if (value == null) {
            throw new NullPointerException("map value");
          }
          internalGetMutableLabels().getMutableMap().put(key, value);
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Google Compute Engine instance labels that must be present for an
         * instance to be included in this assignment group.
         * </pre>
         *
         * <code>map&lt;string, string&gt; labels = 1;</code>
         */
        public Builder putAllLabels(java.util.Map<java.lang.String, java.lang.String> values) {
          internalGetMutableLabels().getMutableMap().putAll(values);
          bitField0_ |= 0x00000001;
          return this;
        }

        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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

        // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.Assignment.GroupLabel)
      }

      // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.Assignment.GroupLabel)
      private static final com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
          DEFAULT_INSTANCE;

      static {
        DEFAULT_INSTANCE =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel();
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
          getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
          getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }

    public interface OsTypeOrBuilder
        extends
        // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.Assignment.OsType)
        com.google.protobuf.MessageOrBuilder {

      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * OS short name, for example "debian" or "windows".
       * </pre>
       *
       * <code>string os_short_name = 1;</code>
       *
       * @return The osShortName.
       */
      java.lang.String getOsShortName();
      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * OS short name, for example "debian" or "windows".
       * </pre>
       *
       * <code>string os_short_name = 1;</code>
       *
       * @return The bytes for osShortName.
       */
      com.google.protobuf.ByteString getOsShortNameBytes();

      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * following OS version.
       * </pre>
       *
       * <code>string os_version = 2;</code>
       *
       * @return The osVersion.
       */
      java.lang.String getOsVersion();
      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * following OS version.
       * </pre>
       *
       * <code>string os_version = 2;</code>
       *
       * @return The bytes for osVersion.
       */
      com.google.protobuf.ByteString getOsVersionBytes();

      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * OS architecture.
       * </pre>
       *
       * <code>string os_architecture = 3;</code>
       *
       * @return The osArchitecture.
       */
      java.lang.String getOsArchitecture();
      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * OS architecture.
       * </pre>
       *
       * <code>string os_architecture = 3;</code>
       *
       * @return The bytes for osArchitecture.
       */
      com.google.protobuf.ByteString getOsArchitectureBytes();
    }
    /**
     *
     *
     * <pre>
     * Defines the criteria for selecting VM Instances by OS type.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.Assignment.OsType}
     */
    public static final class OsType extends com.google.protobuf.GeneratedMessageV3
        implements
        // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.Assignment.OsType)
        OsTypeOrBuilder {
      private static final long serialVersionUID = 0L;
      // Use OsType.newBuilder() to construct.
      private OsType(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }

      private OsType() {
        osShortName_ = "";
        osVersion_ = "";
        osArchitecture_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
        return new OsType();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
        return this.unknownFields;
      }

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_Assignment_OsType_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_Assignment_OsType_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder.class);
      }

      public static final int OS_SHORT_NAME_FIELD_NUMBER = 1;

      @SuppressWarnings("serial")
      private volatile java.lang.Object osShortName_ = "";
      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * OS short name, for example "debian" or "windows".
       * </pre>
       *
       * <code>string os_short_name = 1;</code>
       *
       * @return The osShortName.
       */
      @java.lang.Override
      public java.lang.String getOsShortName() {
        java.lang.Object ref = osShortName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          osShortName_ = s;
          return s;
        }
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * OS short name, for example "debian" or "windows".
       * </pre>
       *
       * <code>string os_short_name = 1;</code>
       *
       * @return The bytes for osShortName.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getOsShortNameBytes() {
        java.lang.Object ref = osShortName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          osShortName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int OS_VERSION_FIELD_NUMBER = 2;

      @SuppressWarnings("serial")
      private volatile java.lang.Object osVersion_ = "";
      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * following OS version.
       * </pre>
       *
       * <code>string os_version = 2;</code>
       *
       * @return The osVersion.
       */
      @java.lang.Override
      public java.lang.String getOsVersion() {
        java.lang.Object ref = osVersion_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          osVersion_ = s;
          return s;
        }
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * following OS version.
       * </pre>
       *
       * <code>string os_version = 2;</code>
       *
       * @return The bytes for osVersion.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getOsVersionBytes() {
        java.lang.Object ref = osVersion_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          osVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int OS_ARCHITECTURE_FIELD_NUMBER = 3;

      @SuppressWarnings("serial")
      private volatile java.lang.Object osArchitecture_ = "";
      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * OS architecture.
       * </pre>
       *
       * <code>string os_architecture = 3;</code>
       *
       * @return The osArchitecture.
       */
      @java.lang.Override
      public java.lang.String getOsArchitecture() {
        java.lang.Object ref = osArchitecture_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          osArchitecture_ = s;
          return s;
        }
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances with OS Inventory enabled and having the following
       * OS architecture.
       * </pre>
       *
       * <code>string os_architecture = 3;</code>
       *
       * @return The bytes for osArchitecture.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getOsArchitectureBytes() {
        java.lang.Object ref = osArchitecture_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          osArchitecture_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private byte memoizedIsInitialized = -1;

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osShortName_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, osShortName_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osVersion_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, osVersion_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osArchitecture_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, osArchitecture_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osShortName_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, osShortName_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osVersion_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, osVersion_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osArchitecture_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, osArchitecture_);
        }
        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 com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType)) {
          return super.equals(obj);
        }
        com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType other =
            (com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType) obj;

        if (!getOsShortName().equals(other.getOsShortName())) return false;
        if (!getOsVersion().equals(other.getOsVersion())) return false;
        if (!getOsArchitecture().equals(other.getOsArchitecture())) 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();
        hash = (37 * hash) + OS_SHORT_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getOsShortName().hashCode();
        hash = (37 * hash) + OS_VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getOsVersion().hashCode();
        hash = (37 * hash) + OS_ARCHITECTURE_FIELD_NUMBER;
        hash = (53 * hash) + getOsArchitecture().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType parseFrom(
          java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType parseFrom(
          java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType parseFrom(
          byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType parseFrom(
          byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType parseFrom(
          java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType parseFrom(
          java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType
          parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType
          parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType parseFrom(
          com.google.protobuf.CodedInputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() {
        return newBuilder();
      }

      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }

      public static Builder newBuilder(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType 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.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       *
       *
       * <pre>
       * Defines the criteria for selecting VM Instances by OS type.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.Assignment.OsType}
       */
      public static final class Builder
          extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
          implements
          // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.Assignment.OsType)
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsTypeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_Assignment_OsType_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_Assignment_OsType_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder.class);
        }

        // Construct using
        // com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.newBuilder()
        private Builder() {}

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

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

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_Assignment_OsType_descriptor;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType
            getDefaultInstanceForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType
              .getDefaultInstance();
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType build() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType buildPartial() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType result =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType(this);
          if (bitField0_ != 0) {
            buildPartial0(result);
          }
          onBuilt();
          return result;
        }

        private void buildPartial0(
            com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.osShortName_ = osShortName_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.osVersion_ = osVersion_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.osArchitecture_ = osArchitecture_;
          }
        }

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

        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.setField(field, value);
        }

        @java.lang.Override
        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }

        @java.lang.Override
        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }

        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index,
            java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }

        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType) {
            return mergeFrom(
                (com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType) other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(
            com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType other) {
          if (other
              == com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType
                  .getDefaultInstance()) return this;
          if (!other.getOsShortName().isEmpty()) {
            osShortName_ = other.osShortName_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (!other.getOsVersion().isEmpty()) {
            osVersion_ = other.osVersion_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (!other.getOsArchitecture().isEmpty()) {
            osArchitecture_ = other.osArchitecture_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

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

        private int bitField0_;

        private java.lang.Object osShortName_ = "";
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * OS short name, for example "debian" or "windows".
         * </pre>
         *
         * <code>string os_short_name = 1;</code>
         *
         * @return The osShortName.
         */
        public java.lang.String getOsShortName() {
          java.lang.Object ref = osShortName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            osShortName_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * OS short name, for example "debian" or "windows".
         * </pre>
         *
         * <code>string os_short_name = 1;</code>
         *
         * @return The bytes for osShortName.
         */
        public com.google.protobuf.ByteString getOsShortNameBytes() {
          java.lang.Object ref = osShortName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            osShortName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * OS short name, for example "debian" or "windows".
         * </pre>
         *
         * <code>string os_short_name = 1;</code>
         *
         * @param value The osShortName to set.
         * @return This builder for chaining.
         */
        public Builder setOsShortName(java.lang.String value) {
          if (value == null) {
            throw new NullPointerException();
          }
          osShortName_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * OS short name, for example "debian" or "windows".
         * </pre>
         *
         * <code>string os_short_name = 1;</code>
         *
         * @return This builder for chaining.
         */
        public Builder clearOsShortName() {
          osShortName_ = getDefaultInstance().getOsShortName();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * OS short name, for example "debian" or "windows".
         * </pre>
         *
         * <code>string os_short_name = 1;</code>
         *
         * @param value The bytes for osShortName to set.
         * @return This builder for chaining.
         */
        public Builder setOsShortNameBytes(com.google.protobuf.ByteString value) {
          if (value == null) {
            throw new NullPointerException();
          }
          checkByteStringIsUtf8(value);
          osShortName_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private java.lang.Object osVersion_ = "";
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * following OS version.
         * </pre>
         *
         * <code>string os_version = 2;</code>
         *
         * @return The osVersion.
         */
        public java.lang.String getOsVersion() {
          java.lang.Object ref = osVersion_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            osVersion_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * following OS version.
         * </pre>
         *
         * <code>string os_version = 2;</code>
         *
         * @return The bytes for osVersion.
         */
        public com.google.protobuf.ByteString getOsVersionBytes() {
          java.lang.Object ref = osVersion_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            osVersion_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * following OS version.
         * </pre>
         *
         * <code>string os_version = 2;</code>
         *
         * @param value The osVersion to set.
         * @return This builder for chaining.
         */
        public Builder setOsVersion(java.lang.String value) {
          if (value == null) {
            throw new NullPointerException();
          }
          osVersion_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * following OS version.
         * </pre>
         *
         * <code>string os_version = 2;</code>
         *
         * @return This builder for chaining.
         */
        public Builder clearOsVersion() {
          osVersion_ = getDefaultInstance().getOsVersion();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * following OS version.
         * </pre>
         *
         * <code>string os_version = 2;</code>
         *
         * @param value The bytes for osVersion to set.
         * @return This builder for chaining.
         */
        public Builder setOsVersionBytes(com.google.protobuf.ByteString value) {
          if (value == null) {
            throw new NullPointerException();
          }
          checkByteStringIsUtf8(value);
          osVersion_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }

        private java.lang.Object osArchitecture_ = "";
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * OS architecture.
         * </pre>
         *
         * <code>string os_architecture = 3;</code>
         *
         * @return The osArchitecture.
         */
        public java.lang.String getOsArchitecture() {
          java.lang.Object ref = osArchitecture_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            osArchitecture_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * OS architecture.
         * </pre>
         *
         * <code>string os_architecture = 3;</code>
         *
         * @return The bytes for osArchitecture.
         */
        public com.google.protobuf.ByteString getOsArchitectureBytes() {
          java.lang.Object ref = osArchitecture_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            osArchitecture_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * OS architecture.
         * </pre>
         *
         * <code>string os_architecture = 3;</code>
         *
         * @param value The osArchitecture to set.
         * @return This builder for chaining.
         */
        public Builder setOsArchitecture(java.lang.String value) {
          if (value == null) {
            throw new NullPointerException();
          }
          osArchitecture_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * OS architecture.
         * </pre>
         *
         * <code>string os_architecture = 3;</code>
         *
         * @return This builder for chaining.
         */
        public Builder clearOsArchitecture() {
          osArchitecture_ = getDefaultInstance().getOsArchitecture();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Targets VM instances with OS Inventory enabled and having the following
         * OS architecture.
         * </pre>
         *
         * <code>string os_architecture = 3;</code>
         *
         * @param value The bytes for osArchitecture to set.
         * @return This builder for chaining.
         */
        public Builder setOsArchitectureBytes(com.google.protobuf.ByteString value) {
          if (value == null) {
            throw new NullPointerException();
          }
          checkByteStringIsUtf8(value);
          osArchitecture_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }

        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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

        // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.Assignment.OsType)
      }

      // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.Assignment.OsType)
      private static final com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType
          DEFAULT_INSTANCE;

      static {
        DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType();
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType
          getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType
          getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }

    public static final int GROUP_LABELS_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel>
        groupLabels_;
    /**
     *
     *
     * <pre>
     * Targets instances matching at least one of these label sets. This allows
     * an assignment to target disparate groups, for example "env=prod or
     * env=staging".
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel>
        getGroupLabelsList() {
      return groupLabels_;
    }
    /**
     *
     *
     * <pre>
     * Targets instances matching at least one of these label sets. This allows
     * an assignment to target disparate groups, for example "env=prod or
     * env=staging".
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabelOrBuilder>
        getGroupLabelsOrBuilderList() {
      return groupLabels_;
    }
    /**
     *
     *
     * <pre>
     * Targets instances matching at least one of these label sets. This allows
     * an assignment to target disparate groups, for example "env=prod or
     * env=staging".
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
     */
    @java.lang.Override
    public int getGroupLabelsCount() {
      return groupLabels_.size();
    }
    /**
     *
     *
     * <pre>
     * Targets instances matching at least one of these label sets. This allows
     * an assignment to target disparate groups, for example "env=prod or
     * env=staging".
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel getGroupLabels(
        int index) {
      return groupLabels_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Targets instances matching at least one of these label sets. This allows
     * an assignment to target disparate groups, for example "env=prod or
     * env=staging".
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabelOrBuilder
        getGroupLabelsOrBuilder(int index) {
      return groupLabels_.get(index);
    }

    public static final int ZONES_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList zones_;
    /**
     *
     *
     * <pre>
     * Targets instances in any of these zones. Leave empty to target instances
     * in any zone.
     * Zonal targeting is uncommon and is supported to facilitate the management
     * of changes by zone.
     * </pre>
     *
     * <code>repeated string zones = 2;</code>
     *
     * @return A list containing the zones.
     */
    public com.google.protobuf.ProtocolStringList getZonesList() {
      return zones_;
    }
    /**
     *
     *
     * <pre>
     * Targets instances in any of these zones. Leave empty to target instances
     * in any zone.
     * Zonal targeting is uncommon and is supported to facilitate the management
     * of changes by zone.
     * </pre>
     *
     * <code>repeated string zones = 2;</code>
     *
     * @return The count of zones.
     */
    public int getZonesCount() {
      return zones_.size();
    }
    /**
     *
     *
     * <pre>
     * Targets instances in any of these zones. Leave empty to target instances
     * in any zone.
     * Zonal targeting is uncommon and is supported to facilitate the management
     * of changes by zone.
     * </pre>
     *
     * <code>repeated string zones = 2;</code>
     *
     * @param index The index of the element to return.
     * @return The zones at the given index.
     */
    public java.lang.String getZones(int index) {
      return zones_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Targets instances in any of these zones. Leave empty to target instances
     * in any zone.
     * Zonal targeting is uncommon and is supported to facilitate the management
     * of changes by zone.
     * </pre>
     *
     * <code>repeated string zones = 2;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the zones at the given index.
     */
    public com.google.protobuf.ByteString getZonesBytes(int index) {
      return zones_.getByteString(index);
    }

    public static final int INSTANCES_FIELD_NUMBER = 3;

    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList instances_;
    /**
     *
     *
     * <pre>
     * Targets any of the instances specified. Instances are specified by their
     * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
     * Instance targeting is uncommon and is supported to facilitate the
     * management of changes by the instance or to target specific VM instances
     * for development and testing.
     * Only supported for project-level policies and must reference instances
     * within this project.
     * </pre>
     *
     * <code>repeated string instances = 3;</code>
     *
     * @return A list containing the instances.
     */
    public com.google.protobuf.ProtocolStringList getInstancesList() {
      return instances_;
    }
    /**
     *
     *
     * <pre>
     * Targets any of the instances specified. Instances are specified by their
     * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
     * Instance targeting is uncommon and is supported to facilitate the
     * management of changes by the instance or to target specific VM instances
     * for development and testing.
     * Only supported for project-level policies and must reference instances
     * within this project.
     * </pre>
     *
     * <code>repeated string instances = 3;</code>
     *
     * @return The count of instances.
     */
    public int getInstancesCount() {
      return instances_.size();
    }
    /**
     *
     *
     * <pre>
     * Targets any of the instances specified. Instances are specified by their
     * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
     * Instance targeting is uncommon and is supported to facilitate the
     * management of changes by the instance or to target specific VM instances
     * for development and testing.
     * Only supported for project-level policies and must reference instances
     * within this project.
     * </pre>
     *
     * <code>repeated string instances = 3;</code>
     *
     * @param index The index of the element to return.
     * @return The instances at the given index.
     */
    public java.lang.String getInstances(int index) {
      return instances_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Targets any of the instances specified. Instances are specified by their
     * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
     * Instance targeting is uncommon and is supported to facilitate the
     * management of changes by the instance or to target specific VM instances
     * for development and testing.
     * Only supported for project-level policies and must reference instances
     * within this project.
     * </pre>
     *
     * <code>repeated string instances = 3;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the instances at the given index.
     */
    public com.google.protobuf.ByteString getInstancesBytes(int index) {
      return instances_.getByteString(index);
    }

    public static final int INSTANCE_NAME_PREFIXES_FIELD_NUMBER = 4;

    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList instanceNamePrefixes_;
    /**
     *
     *
     * <pre>
     * Targets VM instances whose name starts with one of these prefixes.
     * Like labels, this is another way to group VM instances when targeting
     * configs, for example prefix="prod-".
     * Only supported for project-level policies.
     * </pre>
     *
     * <code>repeated string instance_name_prefixes = 4;</code>
     *
     * @return A list containing the instanceNamePrefixes.
     */
    public com.google.protobuf.ProtocolStringList getInstanceNamePrefixesList() {
      return instanceNamePrefixes_;
    }
    /**
     *
     *
     * <pre>
     * Targets VM instances whose name starts with one of these prefixes.
     * Like labels, this is another way to group VM instances when targeting
     * configs, for example prefix="prod-".
     * Only supported for project-level policies.
     * </pre>
     *
     * <code>repeated string instance_name_prefixes = 4;</code>
     *
     * @return The count of instanceNamePrefixes.
     */
    public int getInstanceNamePrefixesCount() {
      return instanceNamePrefixes_.size();
    }
    /**
     *
     *
     * <pre>
     * Targets VM instances whose name starts with one of these prefixes.
     * Like labels, this is another way to group VM instances when targeting
     * configs, for example prefix="prod-".
     * Only supported for project-level policies.
     * </pre>
     *
     * <code>repeated string instance_name_prefixes = 4;</code>
     *
     * @param index The index of the element to return.
     * @return The instanceNamePrefixes at the given index.
     */
    public java.lang.String getInstanceNamePrefixes(int index) {
      return instanceNamePrefixes_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Targets VM instances whose name starts with one of these prefixes.
     * Like labels, this is another way to group VM instances when targeting
     * configs, for example prefix="prod-".
     * Only supported for project-level policies.
     * </pre>
     *
     * <code>repeated string instance_name_prefixes = 4;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the instanceNamePrefixes at the given index.
     */
    public com.google.protobuf.ByteString getInstanceNamePrefixesBytes(int index) {
      return instanceNamePrefixes_.getByteString(index);
    }

    public static final int OS_TYPES_FIELD_NUMBER = 5;

    @SuppressWarnings("serial")
    private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType>
        osTypes_;
    /**
     *
     *
     * <pre>
     * Targets VM instances matching at least one of the following OS types.
     * VM instances must match all supplied criteria for a given OsType to be
     * included.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType>
        getOsTypesList() {
      return osTypes_;
    }
    /**
     *
     *
     * <pre>
     * Targets VM instances matching at least one of the following OS types.
     * VM instances must match all supplied criteria for a given OsType to be
     * included.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsTypeOrBuilder>
        getOsTypesOrBuilderList() {
      return osTypes_;
    }
    /**
     *
     *
     * <pre>
     * Targets VM instances matching at least one of the following OS types.
     * VM instances must match all supplied criteria for a given OsType to be
     * included.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
     */
    @java.lang.Override
    public int getOsTypesCount() {
      return osTypes_.size();
    }
    /**
     *
     *
     * <pre>
     * Targets VM instances matching at least one of the following OS types.
     * VM instances must match all supplied criteria for a given OsType to be
     * included.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType getOsTypes(int index) {
      return osTypes_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Targets VM instances matching at least one of the following OS types.
     * VM instances must match all supplied criteria for a given OsType to be
     * included.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsTypeOrBuilder
        getOsTypesOrBuilder(int index) {
      return osTypes_.get(index);
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      for (int i = 0; i < groupLabels_.size(); i++) {
        output.writeMessage(1, groupLabels_.get(i));
      }
      for (int i = 0; i < zones_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, zones_.getRaw(i));
      }
      for (int i = 0; i < instances_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, instances_.getRaw(i));
      }
      for (int i = 0; i < instanceNamePrefixes_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(
            output, 4, instanceNamePrefixes_.getRaw(i));
      }
      for (int i = 0; i < osTypes_.size(); i++) {
        output.writeMessage(5, osTypes_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < groupLabels_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, groupLabels_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < zones_.size(); i++) {
          dataSize += computeStringSizeNoTag(zones_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getZonesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < instances_.size(); i++) {
          dataSize += computeStringSizeNoTag(instances_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getInstancesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < instanceNamePrefixes_.size(); i++) {
          dataSize += computeStringSizeNoTag(instanceNamePrefixes_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getInstanceNamePrefixesList().size();
      }
      for (int i = 0; i < osTypes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, osTypes_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment) obj;

      if (!getGroupLabelsList().equals(other.getGroupLabelsList())) return false;
      if (!getZonesList().equals(other.getZonesList())) return false;
      if (!getInstancesList().equals(other.getInstancesList())) return false;
      if (!getInstanceNamePrefixesList().equals(other.getInstanceNamePrefixesList())) return false;
      if (!getOsTypesList().equals(other.getOsTypesList())) 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 (getGroupLabelsCount() > 0) {
        hash = (37 * hash) + GROUP_LABELS_FIELD_NUMBER;
        hash = (53 * hash) + getGroupLabelsList().hashCode();
      }
      if (getZonesCount() > 0) {
        hash = (37 * hash) + ZONES_FIELD_NUMBER;
        hash = (53 * hash) + getZonesList().hashCode();
      }
      if (getInstancesCount() > 0) {
        hash = (37 * hash) + INSTANCES_FIELD_NUMBER;
        hash = (53 * hash) + getInstancesList().hashCode();
      }
      if (getInstanceNamePrefixesCount() > 0) {
        hash = (37 * hash) + INSTANCE_NAME_PREFIXES_FIELD_NUMBER;
        hash = (53 * hash) + getInstanceNamePrefixesList().hashCode();
      }
      if (getOsTypesCount() > 0) {
        hash = (37 * hash) + OS_TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getOsTypesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * An assignment represents the group or groups of VM instances that the policy
     * applies to.
     * If an assignment is empty, it applies to all VM instances. Otherwise, the
     * targeted VM instances must meet all the criteria specified. So if both
     * labels and zones are specified, the policy applies to VM instances with those
     * labels and in those zones.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.Assignment}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.Assignment)
        com.google.cloud.osconfig.v1beta.GuestPolicies.AssignmentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_Assignment_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_Assignment_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.Builder.class);
      }

      // Construct using com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (groupLabelsBuilder_ == null) {
          groupLabels_ = java.util.Collections.emptyList();
        } else {
          groupLabels_ = null;
          groupLabelsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        zones_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        instances_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        instanceNamePrefixes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        if (osTypesBuilder_ == null) {
          osTypes_ = java.util.Collections.emptyList();
        } else {
          osTypes_ = null;
          osTypesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_Assignment_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment result) {
        if (groupLabelsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            groupLabels_ = java.util.Collections.unmodifiableList(groupLabels_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.groupLabels_ = groupLabels_;
        } else {
          result.groupLabels_ = groupLabelsBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          zones_ = zones_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.zones_ = zones_;
        if (((bitField0_ & 0x00000004) != 0)) {
          instances_ = instances_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.instances_ = instances_;
        if (((bitField0_ & 0x00000008) != 0)) {
          instanceNamePrefixes_ = instanceNamePrefixes_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.instanceNamePrefixes_ = instanceNamePrefixes_;
        if (osTypesBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            osTypes_ = java.util.Collections.unmodifiableList(osTypes_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.osTypes_ = osTypes_;
        } else {
          result.osTypes_ = osTypesBuilder_.build();
        }
      }

      private void buildPartial0(com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment result) {
        int from_bitField0_ = bitField0_;
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment) {
          return mergeFrom((com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment other) {
        if (other == com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.getDefaultInstance())
          return this;
        if (groupLabelsBuilder_ == null) {
          if (!other.groupLabels_.isEmpty()) {
            if (groupLabels_.isEmpty()) {
              groupLabels_ = other.groupLabels_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureGroupLabelsIsMutable();
              groupLabels_.addAll(other.groupLabels_);
            }
            onChanged();
          }
        } else {
          if (!other.groupLabels_.isEmpty()) {
            if (groupLabelsBuilder_.isEmpty()) {
              groupLabelsBuilder_.dispose();
              groupLabelsBuilder_ = null;
              groupLabels_ = other.groupLabels_;
              bitField0_ = (bitField0_ & ~0x00000001);
              groupLabelsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getGroupLabelsFieldBuilder()
                      : null;
            } else {
              groupLabelsBuilder_.addAllMessages(other.groupLabels_);
            }
          }
        }
        if (!other.zones_.isEmpty()) {
          if (zones_.isEmpty()) {
            zones_ = other.zones_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureZonesIsMutable();
            zones_.addAll(other.zones_);
          }
          onChanged();
        }
        if (!other.instances_.isEmpty()) {
          if (instances_.isEmpty()) {
            instances_ = other.instances_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureInstancesIsMutable();
            instances_.addAll(other.instances_);
          }
          onChanged();
        }
        if (!other.instanceNamePrefixes_.isEmpty()) {
          if (instanceNamePrefixes_.isEmpty()) {
            instanceNamePrefixes_ = other.instanceNamePrefixes_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureInstanceNamePrefixesIsMutable();
            instanceNamePrefixes_.addAll(other.instanceNamePrefixes_);
          }
          onChanged();
        }
        if (osTypesBuilder_ == null) {
          if (!other.osTypes_.isEmpty()) {
            if (osTypes_.isEmpty()) {
              osTypes_ = other.osTypes_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureOsTypesIsMutable();
              osTypes_.addAll(other.osTypes_);
            }
            onChanged();
          }
        } else {
          if (!other.osTypes_.isEmpty()) {
            if (osTypesBuilder_.isEmpty()) {
              osTypesBuilder_.dispose();
              osTypesBuilder_ = null;
              osTypes_ = other.osTypes_;
              bitField0_ = (bitField0_ & ~0x00000010);
              osTypesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getOsTypesFieldBuilder()
                      : null;
            } else {
              osTypesBuilder_.addAllMessages(other.osTypes_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel m =
                      input.readMessage(
                          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
                              .parser(),
                          extensionRegistry);
                  if (groupLabelsBuilder_ == null) {
                    ensureGroupLabelsIsMutable();
                    groupLabels_.add(m);
                  } else {
                    groupLabelsBuilder_.addMessage(m);
                  }
                  break;
                } // case 10
              case 18:
                {
                  java.lang.String s = input.readStringRequireUtf8();
                  ensureZonesIsMutable();
                  zones_.add(s);
                  break;
                } // case 18
              case 26:
                {
                  java.lang.String s = input.readStringRequireUtf8();
                  ensureInstancesIsMutable();
                  instances_.add(s);
                  break;
                } // case 26
              case 34:
                {
                  java.lang.String s = input.readStringRequireUtf8();
                  ensureInstanceNamePrefixesIsMutable();
                  instanceNamePrefixes_.add(s);
                  break;
                } // case 34
              case 42:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType m =
                      input.readMessage(
                          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.parser(),
                          extensionRegistry);
                  if (osTypesBuilder_ == null) {
                    ensureOsTypesIsMutable();
                    osTypes_.add(m);
                  } else {
                    osTypesBuilder_.addMessage(m);
                  }
                  break;
                } // case 42
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel>
          groupLabels_ = java.util.Collections.emptyList();

      private void ensureGroupLabelsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          groupLabels_ =
              new java.util.ArrayList<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel>(
                  groupLabels_);
          bitField0_ |= 0x00000001;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabelOrBuilder>
          groupLabelsBuilder_;

      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel>
          getGroupLabelsList() {
        if (groupLabelsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(groupLabels_);
        } else {
          return groupLabelsBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public int getGroupLabelsCount() {
        if (groupLabelsBuilder_ == null) {
          return groupLabels_.size();
        } else {
          return groupLabelsBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel getGroupLabels(
          int index) {
        if (groupLabelsBuilder_ == null) {
          return groupLabels_.get(index);
        } else {
          return groupLabelsBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public Builder setGroupLabels(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel value) {
        if (groupLabelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroupLabelsIsMutable();
          groupLabels_.set(index, value);
          onChanged();
        } else {
          groupLabelsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public Builder setGroupLabels(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder
              builderForValue) {
        if (groupLabelsBuilder_ == null) {
          ensureGroupLabelsIsMutable();
          groupLabels_.set(index, builderForValue.build());
          onChanged();
        } else {
          groupLabelsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public Builder addGroupLabels(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel value) {
        if (groupLabelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroupLabelsIsMutable();
          groupLabels_.add(value);
          onChanged();
        } else {
          groupLabelsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public Builder addGroupLabels(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel value) {
        if (groupLabelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroupLabelsIsMutable();
          groupLabels_.add(index, value);
          onChanged();
        } else {
          groupLabelsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public Builder addGroupLabels(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder
              builderForValue) {
        if (groupLabelsBuilder_ == null) {
          ensureGroupLabelsIsMutable();
          groupLabels_.add(builderForValue.build());
          onChanged();
        } else {
          groupLabelsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public Builder addGroupLabels(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder
              builderForValue) {
        if (groupLabelsBuilder_ == null) {
          ensureGroupLabelsIsMutable();
          groupLabels_.add(index, builderForValue.build());
          onChanged();
        } else {
          groupLabelsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public Builder addAllGroupLabels(
          java.lang.Iterable<
                  ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel>
              values) {
        if (groupLabelsBuilder_ == null) {
          ensureGroupLabelsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, groupLabels_);
          onChanged();
        } else {
          groupLabelsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public Builder clearGroupLabels() {
        if (groupLabelsBuilder_ == null) {
          groupLabels_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          groupLabelsBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public Builder removeGroupLabels(int index) {
        if (groupLabelsBuilder_ == null) {
          ensureGroupLabelsIsMutable();
          groupLabels_.remove(index);
          onChanged();
        } else {
          groupLabelsBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder
          getGroupLabelsBuilder(int index) {
        return getGroupLabelsFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabelOrBuilder
          getGroupLabelsOrBuilder(int index) {
        if (groupLabelsBuilder_ == null) {
          return groupLabels_.get(index);
        } else {
          return groupLabelsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public java.util.List<
              ? extends
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabelOrBuilder>
          getGroupLabelsOrBuilderList() {
        if (groupLabelsBuilder_ != null) {
          return groupLabelsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(groupLabels_);
        }
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder
          addGroupLabelsBuilder() {
        return getGroupLabelsFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder
          addGroupLabelsBuilder(int index) {
        return getGroupLabelsFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Targets instances matching at least one of these label sets. This allows
       * an assignment to target disparate groups, for example "env=prod or
       * env=staging".
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.GroupLabel group_labels = 1;</code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder>
          getGroupLabelsBuilderList() {
        return getGroupLabelsFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabelOrBuilder>
          getGroupLabelsFieldBuilder() {
        if (groupLabelsBuilder_ == null) {
          groupLabelsBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabel.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.GroupLabelOrBuilder>(
                  groupLabels_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          groupLabels_ = null;
        }
        return groupLabelsBuilder_;
      }

      private com.google.protobuf.LazyStringList zones_ =
          com.google.protobuf.LazyStringArrayList.EMPTY;

      private void ensureZonesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          zones_ = new com.google.protobuf.LazyStringArrayList(zones_);
          bitField0_ |= 0x00000002;
        }
      }
      /**
       *
       *
       * <pre>
       * Targets instances in any of these zones. Leave empty to target instances
       * in any zone.
       * Zonal targeting is uncommon and is supported to facilitate the management
       * of changes by zone.
       * </pre>
       *
       * <code>repeated string zones = 2;</code>
       *
       * @return A list containing the zones.
       */
      public com.google.protobuf.ProtocolStringList getZonesList() {
        return zones_.getUnmodifiableView();
      }
      /**
       *
       *
       * <pre>
       * Targets instances in any of these zones. Leave empty to target instances
       * in any zone.
       * Zonal targeting is uncommon and is supported to facilitate the management
       * of changes by zone.
       * </pre>
       *
       * <code>repeated string zones = 2;</code>
       *
       * @return The count of zones.
       */
      public int getZonesCount() {
        return zones_.size();
      }
      /**
       *
       *
       * <pre>
       * Targets instances in any of these zones. Leave empty to target instances
       * in any zone.
       * Zonal targeting is uncommon and is supported to facilitate the management
       * of changes by zone.
       * </pre>
       *
       * <code>repeated string zones = 2;</code>
       *
       * @param index The index of the element to return.
       * @return The zones at the given index.
       */
      public java.lang.String getZones(int index) {
        return zones_.get(index);
      }
      /**
       *
       *
       * <pre>
       * Targets instances in any of these zones. Leave empty to target instances
       * in any zone.
       * Zonal targeting is uncommon and is supported to facilitate the management
       * of changes by zone.
       * </pre>
       *
       * <code>repeated string zones = 2;</code>
       *
       * @param index The index of the value to return.
       * @return The bytes of the zones at the given index.
       */
      public com.google.protobuf.ByteString getZonesBytes(int index) {
        return zones_.getByteString(index);
      }
      /**
       *
       *
       * <pre>
       * Targets instances in any of these zones. Leave empty to target instances
       * in any zone.
       * Zonal targeting is uncommon and is supported to facilitate the management
       * of changes by zone.
       * </pre>
       *
       * <code>repeated string zones = 2;</code>
       *
       * @param index The index to set the value at.
       * @param value The zones to set.
       * @return This builder for chaining.
       */
      public Builder setZones(int index, java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureZonesIsMutable();
        zones_.set(index, value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances in any of these zones. Leave empty to target instances
       * in any zone.
       * Zonal targeting is uncommon and is supported to facilitate the management
       * of changes by zone.
       * </pre>
       *
       * <code>repeated string zones = 2;</code>
       *
       * @param value The zones to add.
       * @return This builder for chaining.
       */
      public Builder addZones(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureZonesIsMutable();
        zones_.add(value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances in any of these zones. Leave empty to target instances
       * in any zone.
       * Zonal targeting is uncommon and is supported to facilitate the management
       * of changes by zone.
       * </pre>
       *
       * <code>repeated string zones = 2;</code>
       *
       * @param values The zones to add.
       * @return This builder for chaining.
       */
      public Builder addAllZones(java.lang.Iterable<java.lang.String> values) {
        ensureZonesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, zones_);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances in any of these zones. Leave empty to target instances
       * in any zone.
       * Zonal targeting is uncommon and is supported to facilitate the management
       * of changes by zone.
       * </pre>
       *
       * <code>repeated string zones = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearZones() {
        zones_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets instances in any of these zones. Leave empty to target instances
       * in any zone.
       * Zonal targeting is uncommon and is supported to facilitate the management
       * of changes by zone.
       * </pre>
       *
       * <code>repeated string zones = 2;</code>
       *
       * @param value The bytes of the zones to add.
       * @return This builder for chaining.
       */
      public Builder addZonesBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        ensureZonesIsMutable();
        zones_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList instances_ =
          com.google.protobuf.LazyStringArrayList.EMPTY;

      private void ensureInstancesIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          instances_ = new com.google.protobuf.LazyStringArrayList(instances_);
          bitField0_ |= 0x00000004;
        }
      }
      /**
       *
       *
       * <pre>
       * Targets any of the instances specified. Instances are specified by their
       * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
       * Instance targeting is uncommon and is supported to facilitate the
       * management of changes by the instance or to target specific VM instances
       * for development and testing.
       * Only supported for project-level policies and must reference instances
       * within this project.
       * </pre>
       *
       * <code>repeated string instances = 3;</code>
       *
       * @return A list containing the instances.
       */
      public com.google.protobuf.ProtocolStringList getInstancesList() {
        return instances_.getUnmodifiableView();
      }
      /**
       *
       *
       * <pre>
       * Targets any of the instances specified. Instances are specified by their
       * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
       * Instance targeting is uncommon and is supported to facilitate the
       * management of changes by the instance or to target specific VM instances
       * for development and testing.
       * Only supported for project-level policies and must reference instances
       * within this project.
       * </pre>
       *
       * <code>repeated string instances = 3;</code>
       *
       * @return The count of instances.
       */
      public int getInstancesCount() {
        return instances_.size();
      }
      /**
       *
       *
       * <pre>
       * Targets any of the instances specified. Instances are specified by their
       * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
       * Instance targeting is uncommon and is supported to facilitate the
       * management of changes by the instance or to target specific VM instances
       * for development and testing.
       * Only supported for project-level policies and must reference instances
       * within this project.
       * </pre>
       *
       * <code>repeated string instances = 3;</code>
       *
       * @param index The index of the element to return.
       * @return The instances at the given index.
       */
      public java.lang.String getInstances(int index) {
        return instances_.get(index);
      }
      /**
       *
       *
       * <pre>
       * Targets any of the instances specified. Instances are specified by their
       * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
       * Instance targeting is uncommon and is supported to facilitate the
       * management of changes by the instance or to target specific VM instances
       * for development and testing.
       * Only supported for project-level policies and must reference instances
       * within this project.
       * </pre>
       *
       * <code>repeated string instances = 3;</code>
       *
       * @param index The index of the value to return.
       * @return The bytes of the instances at the given index.
       */
      public com.google.protobuf.ByteString getInstancesBytes(int index) {
        return instances_.getByteString(index);
      }
      /**
       *
       *
       * <pre>
       * Targets any of the instances specified. Instances are specified by their
       * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
       * Instance targeting is uncommon and is supported to facilitate the
       * management of changes by the instance or to target specific VM instances
       * for development and testing.
       * Only supported for project-level policies and must reference instances
       * within this project.
       * </pre>
       *
       * <code>repeated string instances = 3;</code>
       *
       * @param index The index to set the value at.
       * @param value The instances to set.
       * @return This builder for chaining.
       */
      public Builder setInstances(int index, java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureInstancesIsMutable();
        instances_.set(index, value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets any of the instances specified. Instances are specified by their
       * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
       * Instance targeting is uncommon and is supported to facilitate the
       * management of changes by the instance or to target specific VM instances
       * for development and testing.
       * Only supported for project-level policies and must reference instances
       * within this project.
       * </pre>
       *
       * <code>repeated string instances = 3;</code>
       *
       * @param value The instances to add.
       * @return This builder for chaining.
       */
      public Builder addInstances(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureInstancesIsMutable();
        instances_.add(value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets any of the instances specified. Instances are specified by their
       * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
       * Instance targeting is uncommon and is supported to facilitate the
       * management of changes by the instance or to target specific VM instances
       * for development and testing.
       * Only supported for project-level policies and must reference instances
       * within this project.
       * </pre>
       *
       * <code>repeated string instances = 3;</code>
       *
       * @param values The instances to add.
       * @return This builder for chaining.
       */
      public Builder addAllInstances(java.lang.Iterable<java.lang.String> values) {
        ensureInstancesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, instances_);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets any of the instances specified. Instances are specified by their
       * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
       * Instance targeting is uncommon and is supported to facilitate the
       * management of changes by the instance or to target specific VM instances
       * for development and testing.
       * Only supported for project-level policies and must reference instances
       * within this project.
       * </pre>
       *
       * <code>repeated string instances = 3;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearInstances() {
        instances_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets any of the instances specified. Instances are specified by their
       * URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`.
       * Instance targeting is uncommon and is supported to facilitate the
       * management of changes by the instance or to target specific VM instances
       * for development and testing.
       * Only supported for project-level policies and must reference instances
       * within this project.
       * </pre>
       *
       * <code>repeated string instances = 3;</code>
       *
       * @param value The bytes of the instances to add.
       * @return This builder for chaining.
       */
      public Builder addInstancesBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        ensureInstancesIsMutable();
        instances_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList instanceNamePrefixes_ =
          com.google.protobuf.LazyStringArrayList.EMPTY;

      private void ensureInstanceNamePrefixesIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          instanceNamePrefixes_ =
              new com.google.protobuf.LazyStringArrayList(instanceNamePrefixes_);
          bitField0_ |= 0x00000008;
        }
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances whose name starts with one of these prefixes.
       * Like labels, this is another way to group VM instances when targeting
       * configs, for example prefix="prod-".
       * Only supported for project-level policies.
       * </pre>
       *
       * <code>repeated string instance_name_prefixes = 4;</code>
       *
       * @return A list containing the instanceNamePrefixes.
       */
      public com.google.protobuf.ProtocolStringList getInstanceNamePrefixesList() {
        return instanceNamePrefixes_.getUnmodifiableView();
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances whose name starts with one of these prefixes.
       * Like labels, this is another way to group VM instances when targeting
       * configs, for example prefix="prod-".
       * Only supported for project-level policies.
       * </pre>
       *
       * <code>repeated string instance_name_prefixes = 4;</code>
       *
       * @return The count of instanceNamePrefixes.
       */
      public int getInstanceNamePrefixesCount() {
        return instanceNamePrefixes_.size();
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances whose name starts with one of these prefixes.
       * Like labels, this is another way to group VM instances when targeting
       * configs, for example prefix="prod-".
       * Only supported for project-level policies.
       * </pre>
       *
       * <code>repeated string instance_name_prefixes = 4;</code>
       *
       * @param index The index of the element to return.
       * @return The instanceNamePrefixes at the given index.
       */
      public java.lang.String getInstanceNamePrefixes(int index) {
        return instanceNamePrefixes_.get(index);
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances whose name starts with one of these prefixes.
       * Like labels, this is another way to group VM instances when targeting
       * configs, for example prefix="prod-".
       * Only supported for project-level policies.
       * </pre>
       *
       * <code>repeated string instance_name_prefixes = 4;</code>
       *
       * @param index The index of the value to return.
       * @return The bytes of the instanceNamePrefixes at the given index.
       */
      public com.google.protobuf.ByteString getInstanceNamePrefixesBytes(int index) {
        return instanceNamePrefixes_.getByteString(index);
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances whose name starts with one of these prefixes.
       * Like labels, this is another way to group VM instances when targeting
       * configs, for example prefix="prod-".
       * Only supported for project-level policies.
       * </pre>
       *
       * <code>repeated string instance_name_prefixes = 4;</code>
       *
       * @param index The index to set the value at.
       * @param value The instanceNamePrefixes to set.
       * @return This builder for chaining.
       */
      public Builder setInstanceNamePrefixes(int index, java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureInstanceNamePrefixesIsMutable();
        instanceNamePrefixes_.set(index, value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances whose name starts with one of these prefixes.
       * Like labels, this is another way to group VM instances when targeting
       * configs, for example prefix="prod-".
       * Only supported for project-level policies.
       * </pre>
       *
       * <code>repeated string instance_name_prefixes = 4;</code>
       *
       * @param value The instanceNamePrefixes to add.
       * @return This builder for chaining.
       */
      public Builder addInstanceNamePrefixes(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureInstanceNamePrefixesIsMutable();
        instanceNamePrefixes_.add(value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances whose name starts with one of these prefixes.
       * Like labels, this is another way to group VM instances when targeting
       * configs, for example prefix="prod-".
       * Only supported for project-level policies.
       * </pre>
       *
       * <code>repeated string instance_name_prefixes = 4;</code>
       *
       * @param values The instanceNamePrefixes to add.
       * @return This builder for chaining.
       */
      public Builder addAllInstanceNamePrefixes(java.lang.Iterable<java.lang.String> values) {
        ensureInstanceNamePrefixesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, instanceNamePrefixes_);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances whose name starts with one of these prefixes.
       * Like labels, this is another way to group VM instances when targeting
       * configs, for example prefix="prod-".
       * Only supported for project-level policies.
       * </pre>
       *
       * <code>repeated string instance_name_prefixes = 4;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearInstanceNamePrefixes() {
        instanceNamePrefixes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances whose name starts with one of these prefixes.
       * Like labels, this is another way to group VM instances when targeting
       * configs, for example prefix="prod-".
       * Only supported for project-level policies.
       * </pre>
       *
       * <code>repeated string instance_name_prefixes = 4;</code>
       *
       * @param value The bytes of the instanceNamePrefixes to add.
       * @return This builder for chaining.
       */
      public Builder addInstanceNamePrefixesBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        ensureInstanceNamePrefixesIsMutable();
        instanceNamePrefixes_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType>
          osTypes_ = java.util.Collections.emptyList();

      private void ensureOsTypesIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          osTypes_ =
              new java.util.ArrayList<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType>(osTypes_);
          bitField0_ |= 0x00000010;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsTypeOrBuilder>
          osTypesBuilder_;

      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType>
          getOsTypesList() {
        if (osTypesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(osTypes_);
        } else {
          return osTypesBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public int getOsTypesCount() {
        if (osTypesBuilder_ == null) {
          return osTypes_.size();
        } else {
          return osTypesBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType getOsTypes(
          int index) {
        if (osTypesBuilder_ == null) {
          return osTypes_.get(index);
        } else {
          return osTypesBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public Builder setOsTypes(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType value) {
        if (osTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOsTypesIsMutable();
          osTypes_.set(index, value);
          onChanged();
        } else {
          osTypesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public Builder setOsTypes(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder
              builderForValue) {
        if (osTypesBuilder_ == null) {
          ensureOsTypesIsMutable();
          osTypes_.set(index, builderForValue.build());
          onChanged();
        } else {
          osTypesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public Builder addOsTypes(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType value) {
        if (osTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOsTypesIsMutable();
          osTypes_.add(value);
          onChanged();
        } else {
          osTypesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public Builder addOsTypes(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType value) {
        if (osTypesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOsTypesIsMutable();
          osTypes_.add(index, value);
          onChanged();
        } else {
          osTypesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public Builder addOsTypes(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder
              builderForValue) {
        if (osTypesBuilder_ == null) {
          ensureOsTypesIsMutable();
          osTypes_.add(builderForValue.build());
          onChanged();
        } else {
          osTypesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public Builder addOsTypes(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder
              builderForValue) {
        if (osTypesBuilder_ == null) {
          ensureOsTypesIsMutable();
          osTypes_.add(index, builderForValue.build());
          onChanged();
        } else {
          osTypesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public Builder addAllOsTypes(
          java.lang.Iterable<
                  ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType>
              values) {
        if (osTypesBuilder_ == null) {
          ensureOsTypesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, osTypes_);
          onChanged();
        } else {
          osTypesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public Builder clearOsTypes() {
        if (osTypesBuilder_ == null) {
          osTypes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          osTypesBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public Builder removeOsTypes(int index) {
        if (osTypesBuilder_ == null) {
          ensureOsTypesIsMutable();
          osTypes_.remove(index);
          onChanged();
        } else {
          osTypesBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder
          getOsTypesBuilder(int index) {
        return getOsTypesFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsTypeOrBuilder
          getOsTypesOrBuilder(int index) {
        if (osTypesBuilder_ == null) {
          return osTypes_.get(index);
        } else {
          return osTypesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public java.util.List<
              ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsTypeOrBuilder>
          getOsTypesOrBuilderList() {
        if (osTypesBuilder_ != null) {
          return osTypesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(osTypes_);
        }
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder
          addOsTypesBuilder() {
        return getOsTypesFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder
          addOsTypesBuilder(int index) {
        return getOsTypesFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Targets VM instances matching at least one of the following OS types.
       * VM instances must match all supplied criteria for a given OsType to be
       * included.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.Assignment.OsType os_types = 5;</code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder>
          getOsTypesBuilderList() {
        return getOsTypesFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsTypeOrBuilder>
          getOsTypesFieldBuilder() {
        if (osTypesBuilder_ == null) {
          osTypesBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsType.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment.OsTypeOrBuilder>(
                  osTypes_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
          osTypes_ = null;
        }
        return osTypesBuilder_;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.Assignment)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.Assignment)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.Assignment getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface PackageOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.Package)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. The name of the package. A package is uniquely identified for conflict
     * validation by checking the package name and the manager(s) that the
     * package targets.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The name.
     */
    java.lang.String getName();
    /**
     *
     *
     * <pre>
     * Required. The name of the package. A package is uniquely identified for conflict
     * validation by checking the package name and the manager(s) that the
     * package targets.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString getNameBytes();

    /**
     *
     *
     * <pre>
     * The desired_state the agent should maintain for this package. The
     * default is to ensure the package is installed.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 2;</code>
     *
     * @return The enum numeric value on the wire for desiredState.
     */
    int getDesiredStateValue();
    /**
     *
     *
     * <pre>
     * The desired_state the agent should maintain for this package. The
     * default is to ensure the package is installed.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 2;</code>
     *
     * @return The desiredState.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState getDesiredState();

    /**
     *
     *
     * <pre>
     * Type of package manager that can be used to install this package.
     * If a system does not have the package manager, the package is not
     * installed or removed no error message is returned. By default,
     * or if you specify `ANY`,
     * the agent attempts to install and remove this package using the default
     * package manager. This is useful when creating a policy that applies to
     * different types of systems.
     * The default behavior is ANY.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.Package.Manager manager = 3;</code>
     *
     * @return The enum numeric value on the wire for manager.
     */
    int getManagerValue();
    /**
     *
     *
     * <pre>
     * Type of package manager that can be used to install this package.
     * If a system does not have the package manager, the package is not
     * installed or removed no error message is returned. By default,
     * or if you specify `ANY`,
     * the agent attempts to install and remove this package using the default
     * package manager. This is useful when creating a policy that applies to
     * different types of systems.
     * The default behavior is ANY.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.Package.Manager manager = 3;</code>
     *
     * @return The manager.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager getManager();
  }
  /**
   *
   *
   * <pre>
   * Package is a reference to the software package to be installed or removed.
   * The agent on the VM instance uses the system package manager to apply the
   * config.
   * These are the commands that the agent uses to install or remove
   * packages.
   * Apt
   * install: `apt-get update &amp;&amp; apt-get -y install package1 package2 package3`
   * remove: `apt-get -y remove package1 package2 package3`
   * Yum
   * install: `yum -y install package1 package2 package3`
   * remove: `yum -y remove package1 package2 package3`
   * Zypper
   * install: `zypper install package1 package2 package3`
   * remove: `zypper rm package1 package2`
   * Googet
   * install: `googet -noconfirm install package1 package2 package3`
   * remove: `googet -noconfirm remove package1 package2 package3`
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.Package}
   */
  public static final class Package extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.Package)
      PackageOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Package.newBuilder() to construct.
    private Package(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private Package() {
      name_ = "";
      desiredState_ = 0;
      manager_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new Package();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_Package_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_Package_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.Package.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder.class);
    }

    /**
     *
     *
     * <pre>
     * Types of package managers that may be used to manage this package.
     * </pre>
     *
     * Protobuf enum {@code google.cloud.osconfig.v1beta.Package.Manager}
     */
    public enum Manager implements com.google.protobuf.ProtocolMessageEnum {
      /**
       *
       *
       * <pre>
       * The default behavior is ANY.
       * </pre>
       *
       * <code>MANAGER_UNSPECIFIED = 0;</code>
       */
      MANAGER_UNSPECIFIED(0),
      /**
       *
       *
       * <pre>
       * Apply this package config using the default system package manager.
       * </pre>
       *
       * <code>ANY = 1;</code>
       */
      ANY(1),
      /**
       *
       *
       * <pre>
       * Apply this package config only if Apt is available on the system.
       * </pre>
       *
       * <code>APT = 2;</code>
       */
      APT(2),
      /**
       *
       *
       * <pre>
       * Apply this package config only if Yum is available on the system.
       * </pre>
       *
       * <code>YUM = 3;</code>
       */
      YUM(3),
      /**
       *
       *
       * <pre>
       * Apply this package config only if Zypper is available on the system.
       * </pre>
       *
       * <code>ZYPPER = 4;</code>
       */
      ZYPPER(4),
      /**
       *
       *
       * <pre>
       * Apply this package config only if GooGet is available on the system.
       * </pre>
       *
       * <code>GOO = 5;</code>
       */
      GOO(5),
      UNRECOGNIZED(-1),
      ;

      /**
       *
       *
       * <pre>
       * The default behavior is ANY.
       * </pre>
       *
       * <code>MANAGER_UNSPECIFIED = 0;</code>
       */
      public static final int MANAGER_UNSPECIFIED_VALUE = 0;
      /**
       *
       *
       * <pre>
       * Apply this package config using the default system package manager.
       * </pre>
       *
       * <code>ANY = 1;</code>
       */
      public static final int ANY_VALUE = 1;
      /**
       *
       *
       * <pre>
       * Apply this package config only if Apt is available on the system.
       * </pre>
       *
       * <code>APT = 2;</code>
       */
      public static final int APT_VALUE = 2;
      /**
       *
       *
       * <pre>
       * Apply this package config only if Yum is available on the system.
       * </pre>
       *
       * <code>YUM = 3;</code>
       */
      public static final int YUM_VALUE = 3;
      /**
       *
       *
       * <pre>
       * Apply this package config only if Zypper is available on the system.
       * </pre>
       *
       * <code>ZYPPER = 4;</code>
       */
      public static final int ZYPPER_VALUE = 4;
      /**
       *
       *
       * <pre>
       * Apply this package config only if GooGet is available on the system.
       * </pre>
       *
       * <code>GOO = 5;</code>
       */
      public static final int GOO_VALUE = 5;

      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Manager valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Manager forNumber(int value) {
        switch (value) {
          case 0:
            return MANAGER_UNSPECIFIED;
          case 1:
            return ANY;
          case 2:
            return APT;
          case 3:
            return YUM;
          case 4:
            return ZYPPER;
          case 5:
            return GOO;
          default:
            return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Manager> internalGetValueMap() {
        return internalValueMap;
      }

      private static final com.google.protobuf.Internal.EnumLiteMap<Manager> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<Manager>() {
            public Manager findValueByNumber(int number) {
              return Manager.forNumber(number);
            }
          };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }

      public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
        return getDescriptor();
      }

      public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.Package.getDescriptor()
            .getEnumTypes()
            .get(0);
      }

      private static final Manager[] VALUES = values();

      public static Manager valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Manager(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:google.cloud.osconfig.v1beta.Package.Manager)
    }

    public static final int NAME_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     *
     *
     * <pre>
     * Required. The name of the package. A package is uniquely identified for conflict
     * validation by checking the package name and the manager(s) that the
     * package targets.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
        name_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The name of the package. A package is uniquely identified for conflict
     * validation by checking the package name and the manager(s) that the
     * package targets.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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 DESIRED_STATE_FIELD_NUMBER = 2;
    private int desiredState_ = 0;
    /**
     *
     *
     * <pre>
     * The desired_state the agent should maintain for this package. The
     * default is to ensure the package is installed.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 2;</code>
     *
     * @return The enum numeric value on the wire for desiredState.
     */
    @java.lang.Override
    public int getDesiredStateValue() {
      return desiredState_;
    }
    /**
     *
     *
     * <pre>
     * The desired_state the agent should maintain for this package. The
     * default is to ensure the package is installed.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 2;</code>
     *
     * @return The desiredState.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState getDesiredState() {
      com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState result =
          com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.forNumber(desiredState_);
      return result == null
          ? com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.UNRECOGNIZED
          : result;
    }

    public static final int MANAGER_FIELD_NUMBER = 3;
    private int manager_ = 0;
    /**
     *
     *
     * <pre>
     * Type of package manager that can be used to install this package.
     * If a system does not have the package manager, the package is not
     * installed or removed no error message is returned. By default,
     * or if you specify `ANY`,
     * the agent attempts to install and remove this package using the default
     * package manager. This is useful when creating a policy that applies to
     * different types of systems.
     * The default behavior is ANY.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.Package.Manager manager = 3;</code>
     *
     * @return The enum numeric value on the wire for manager.
     */
    @java.lang.Override
    public int getManagerValue() {
      return manager_;
    }
    /**
     *
     *
     * <pre>
     * Type of package manager that can be used to install this package.
     * If a system does not have the package manager, the package is not
     * installed or removed no error message is returned. By default,
     * or if you specify `ANY`,
     * the agent attempts to install and remove this package using the default
     * package manager. This is useful when creating a policy that applies to
     * different types of systems.
     * The default behavior is ANY.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.Package.Manager manager = 3;</code>
     *
     * @return The manager.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager getManager() {
      com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager result =
          com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager.forNumber(manager_);
      return result == null
          ? com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager.UNRECOGNIZED
          : result;
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (desiredState_
          != com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.DESIRED_STATE_UNSPECIFIED
              .getNumber()) {
        output.writeEnum(2, desiredState_);
      }
      if (manager_
          != com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager.MANAGER_UNSPECIFIED
              .getNumber()) {
        output.writeEnum(3, manager_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (desiredState_
          != com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.DESIRED_STATE_UNSPECIFIED
              .getNumber()) {
        size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, desiredState_);
      }
      if (manager_
          != com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager.MANAGER_UNSPECIFIED
              .getNumber()) {
        size += com.google.protobuf.CodedOutputStream.computeEnumSize(3, manager_);
      }
      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 com.google.cloud.osconfig.v1beta.GuestPolicies.Package)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.Package other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.Package) obj;

      if (!getName().equals(other.getName())) return false;
      if (desiredState_ != other.desiredState_) return false;
      if (manager_ != other.manager_) 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();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + DESIRED_STATE_FIELD_NUMBER;
      hash = (53 * hash) + desiredState_;
      hash = (37 * hash) + MANAGER_FIELD_NUMBER;
      hash = (53 * hash) + manager_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.Package 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Package is a reference to the software package to be installed or removed.
     * The agent on the VM instance uses the system package manager to apply the
     * config.
     * These are the commands that the agent uses to install or remove
     * packages.
     * Apt
     * install: `apt-get update &amp;&amp; apt-get -y install package1 package2 package3`
     * remove: `apt-get -y remove package1 package2 package3`
     * Yum
     * install: `yum -y install package1 package2 package3`
     * remove: `yum -y remove package1 package2 package3`
     * Zypper
     * install: `zypper install package1 package2 package3`
     * remove: `zypper rm package1 package2`
     * Googet
     * install: `googet -noconfirm install package1 package2 package3`
     * remove: `googet -noconfirm remove package1 package2 package3`
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.Package}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.Package)
        com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_Package_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_Package_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.Package.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder.class);
      }

      // Construct using com.google.cloud.osconfig.v1beta.GuestPolicies.Package.newBuilder()
      private Builder() {}

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_Package_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Package getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.Package.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Package build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.Package result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Package buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.Package result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.Package(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.cloud.osconfig.v1beta.GuestPolicies.Package result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.desiredState_ = desiredState_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.manager_ = manager_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.Package) {
          return mergeFrom((com.google.cloud.osconfig.v1beta.GuestPolicies.Package) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.osconfig.v1beta.GuestPolicies.Package other) {
        if (other == com.google.cloud.osconfig.v1beta.GuestPolicies.Package.getDefaultInstance())
          return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.desiredState_ != 0) {
          setDesiredStateValue(other.getDesiredStateValue());
        }
        if (other.manager_ != 0) {
          setManagerValue(other.getManagerValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       *
       *
       * <pre>
       * Required. The name of the package. A package is uniquely identified for conflict
       * validation by checking the package name and the manager(s) that the
       * package targets.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the package. A package is uniquely identified for conflict
       * validation by checking the package name and the manager(s) that the
       * package targets.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the package. A package is uniquely identified for conflict
       * validation by checking the package name and the manager(s) that the
       * package targets.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the package. A package is uniquely identified for conflict
       * validation by checking the package name and the manager(s) that the
       * package targets.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the package. A package is uniquely identified for conflict
       * validation by checking the package name and the manager(s) that the
       * package targets.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
        }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private int desiredState_ = 0;
      /**
       *
       *
       * <pre>
       * The desired_state the agent should maintain for this package. The
       * default is to ensure the package is installed.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 2;</code>
       *
       * @return The enum numeric value on the wire for desiredState.
       */
      @java.lang.Override
      public int getDesiredStateValue() {
        return desiredState_;
      }
      /**
       *
       *
       * <pre>
       * The desired_state the agent should maintain for this package. The
       * default is to ensure the package is installed.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 2;</code>
       *
       * @param value The enum numeric value on the wire for desiredState to set.
       * @return This builder for chaining.
       */
      public Builder setDesiredStateValue(int value) {
        desiredState_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The desired_state the agent should maintain for this package. The
       * default is to ensure the package is installed.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 2;</code>
       *
       * @return The desiredState.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState getDesiredState() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState result =
            com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.forNumber(desiredState_);
        return result == null
            ? com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.UNRECOGNIZED
            : result;
      }
      /**
       *
       *
       * <pre>
       * The desired_state the agent should maintain for this package. The
       * default is to ensure the package is installed.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 2;</code>
       *
       * @param value The desiredState to set.
       * @return This builder for chaining.
       */
      public Builder setDesiredState(
          com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        desiredState_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The desired_state the agent should maintain for this package. The
       * default is to ensure the package is installed.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearDesiredState() {
        bitField0_ = (bitField0_ & ~0x00000002);
        desiredState_ = 0;
        onChanged();
        return this;
      }

      private int manager_ = 0;
      /**
       *
       *
       * <pre>
       * Type of package manager that can be used to install this package.
       * If a system does not have the package manager, the package is not
       * installed or removed no error message is returned. By default,
       * or if you specify `ANY`,
       * the agent attempts to install and remove this package using the default
       * package manager. This is useful when creating a policy that applies to
       * different types of systems.
       * The default behavior is ANY.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package.Manager manager = 3;</code>
       *
       * @return The enum numeric value on the wire for manager.
       */
      @java.lang.Override
      public int getManagerValue() {
        return manager_;
      }
      /**
       *
       *
       * <pre>
       * Type of package manager that can be used to install this package.
       * If a system does not have the package manager, the package is not
       * installed or removed no error message is returned. By default,
       * or if you specify `ANY`,
       * the agent attempts to install and remove this package using the default
       * package manager. This is useful when creating a policy that applies to
       * different types of systems.
       * The default behavior is ANY.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package.Manager manager = 3;</code>
       *
       * @param value The enum numeric value on the wire for manager to set.
       * @return This builder for chaining.
       */
      public Builder setManagerValue(int value) {
        manager_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Type of package manager that can be used to install this package.
       * If a system does not have the package manager, the package is not
       * installed or removed no error message is returned. By default,
       * or if you specify `ANY`,
       * the agent attempts to install and remove this package using the default
       * package manager. This is useful when creating a policy that applies to
       * different types of systems.
       * The default behavior is ANY.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package.Manager manager = 3;</code>
       *
       * @return The manager.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager getManager() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager result =
            com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager.forNumber(manager_);
        return result == null
            ? com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager.UNRECOGNIZED
            : result;
      }
      /**
       *
       *
       * <pre>
       * Type of package manager that can be used to install this package.
       * If a system does not have the package manager, the package is not
       * installed or removed no error message is returned. By default,
       * or if you specify `ANY`,
       * the agent attempts to install and remove this package using the default
       * package manager. This is useful when creating a policy that applies to
       * different types of systems.
       * The default behavior is ANY.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package.Manager manager = 3;</code>
       *
       * @param value The manager to set.
       * @return This builder for chaining.
       */
      public Builder setManager(
          com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Manager value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        manager_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Type of package manager that can be used to install this package.
       * If a system does not have the package manager, the package is not
       * installed or removed no error message is returned. By default,
       * or if you specify `ANY`,
       * the agent attempts to install and remove this package using the default
       * package manager. This is useful when creating a policy that applies to
       * different types of systems.
       * The default behavior is ANY.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package.Manager manager = 3;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearManager() {
        bitField0_ = (bitField0_ & ~0x00000004);
        manager_ = 0;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.Package)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.Package)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.Package DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.Package();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.Package getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.Package getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface AptRepositoryOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.AptRepository)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Type of archive files in this repository. The default behavior is DEB.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.AptRepository.ArchiveType archive_type = 1;</code>
     *
     * @return The enum numeric value on the wire for archiveType.
     */
    int getArchiveTypeValue();
    /**
     *
     *
     * <pre>
     * Type of archive files in this repository. The default behavior is DEB.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.AptRepository.ArchiveType archive_type = 1;</code>
     *
     * @return The archiveType.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType getArchiveType();

    /**
     *
     *
     * <pre>
     * Required. URI for this repository.
     * </pre>
     *
     * <code>string uri = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The uri.
     */
    java.lang.String getUri();
    /**
     *
     *
     * <pre>
     * Required. URI for this repository.
     * </pre>
     *
     * <code>string uri = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for uri.
     */
    com.google.protobuf.ByteString getUriBytes();

    /**
     *
     *
     * <pre>
     * Required. Distribution of this repository.
     * </pre>
     *
     * <code>string distribution = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The distribution.
     */
    java.lang.String getDistribution();
    /**
     *
     *
     * <pre>
     * Required. Distribution of this repository.
     * </pre>
     *
     * <code>string distribution = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for distribution.
     */
    com.google.protobuf.ByteString getDistributionBytes();

    /**
     *
     *
     * <pre>
     * Required. List of components for this repository. Must contain at least one item.
     * </pre>
     *
     * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return A list containing the components.
     */
    java.util.List<java.lang.String> getComponentsList();
    /**
     *
     *
     * <pre>
     * Required. List of components for this repository. Must contain at least one item.
     * </pre>
     *
     * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The count of components.
     */
    int getComponentsCount();
    /**
     *
     *
     * <pre>
     * Required. List of components for this repository. Must contain at least one item.
     * </pre>
     *
     * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @param index The index of the element to return.
     * @return The components at the given index.
     */
    java.lang.String getComponents(int index);
    /**
     *
     *
     * <pre>
     * Required. List of components for this repository. Must contain at least one item.
     * </pre>
     *
     * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the components at the given index.
     */
    com.google.protobuf.ByteString getComponentsBytes(int index);

    /**
     *
     *
     * <pre>
     * URI of the key file for this repository. The agent maintains
     * a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing
     * all the keys in any applied guest policy.
     * </pre>
     *
     * <code>string gpg_key = 5;</code>
     *
     * @return The gpgKey.
     */
    java.lang.String getGpgKey();
    /**
     *
     *
     * <pre>
     * URI of the key file for this repository. The agent maintains
     * a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing
     * all the keys in any applied guest policy.
     * </pre>
     *
     * <code>string gpg_key = 5;</code>
     *
     * @return The bytes for gpgKey.
     */
    com.google.protobuf.ByteString getGpgKeyBytes();
  }
  /**
   *
   *
   * <pre>
   * Represents a single Apt package repository. This repository is added to
   * a repo file that is stored at
   * `/etc/apt/sources.list.d/google_osconfig.list`.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.AptRepository}
   */
  public static final class AptRepository extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.AptRepository)
      AptRepositoryOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use AptRepository.newBuilder() to construct.
    private AptRepository(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private AptRepository() {
      archiveType_ = 0;
      uri_ = "";
      distribution_ = "";
      components_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      gpgKey_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new AptRepository();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_AptRepository_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_AptRepository_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.Builder.class);
    }

    /**
     *
     *
     * <pre>
     * Type of archive.
     * </pre>
     *
     * Protobuf enum {@code google.cloud.osconfig.v1beta.AptRepository.ArchiveType}
     */
    public enum ArchiveType implements com.google.protobuf.ProtocolMessageEnum {
      /**
       *
       *
       * <pre>
       * Unspecified.
       * </pre>
       *
       * <code>ARCHIVE_TYPE_UNSPECIFIED = 0;</code>
       */
      ARCHIVE_TYPE_UNSPECIFIED(0),
      /**
       *
       *
       * <pre>
       * DEB indicates that the archive contains binary files.
       * </pre>
       *
       * <code>DEB = 1;</code>
       */
      DEB(1),
      /**
       *
       *
       * <pre>
       * DEB_SRC indicates that the archive contains source files.
       * </pre>
       *
       * <code>DEB_SRC = 2;</code>
       */
      DEB_SRC(2),
      UNRECOGNIZED(-1),
      ;

      /**
       *
       *
       * <pre>
       * Unspecified.
       * </pre>
       *
       * <code>ARCHIVE_TYPE_UNSPECIFIED = 0;</code>
       */
      public static final int ARCHIVE_TYPE_UNSPECIFIED_VALUE = 0;
      /**
       *
       *
       * <pre>
       * DEB indicates that the archive contains binary files.
       * </pre>
       *
       * <code>DEB = 1;</code>
       */
      public static final int DEB_VALUE = 1;
      /**
       *
       *
       * <pre>
       * DEB_SRC indicates that the archive contains source files.
       * </pre>
       *
       * <code>DEB_SRC = 2;</code>
       */
      public static final int DEB_SRC_VALUE = 2;

      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ArchiveType valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static ArchiveType forNumber(int value) {
        switch (value) {
          case 0:
            return ARCHIVE_TYPE_UNSPECIFIED;
          case 1:
            return DEB;
          case 2:
            return DEB_SRC;
          default:
            return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<ArchiveType> internalGetValueMap() {
        return internalValueMap;
      }

      private static final com.google.protobuf.Internal.EnumLiteMap<ArchiveType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<ArchiveType>() {
            public ArchiveType findValueByNumber(int number) {
              return ArchiveType.forNumber(number);
            }
          };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }

      public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
        return getDescriptor();
      }

      public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.getDescriptor()
            .getEnumTypes()
            .get(0);
      }

      private static final ArchiveType[] VALUES = values();

      public static ArchiveType valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private ArchiveType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:google.cloud.osconfig.v1beta.AptRepository.ArchiveType)
    }

    public static final int ARCHIVE_TYPE_FIELD_NUMBER = 1;
    private int archiveType_ = 0;
    /**
     *
     *
     * <pre>
     * Type of archive files in this repository. The default behavior is DEB.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.AptRepository.ArchiveType archive_type = 1;</code>
     *
     * @return The enum numeric value on the wire for archiveType.
     */
    @java.lang.Override
    public int getArchiveTypeValue() {
      return archiveType_;
    }
    /**
     *
     *
     * <pre>
     * Type of archive files in this repository. The default behavior is DEB.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.AptRepository.ArchiveType archive_type = 1;</code>
     *
     * @return The archiveType.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType
        getArchiveType() {
      com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType result =
          com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType.forNumber(
              archiveType_);
      return result == null
          ? com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType.UNRECOGNIZED
          : result;
    }

    public static final int URI_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private volatile java.lang.Object uri_ = "";
    /**
     *
     *
     * <pre>
     * Required. URI for this repository.
     * </pre>
     *
     * <code>string uri = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The uri.
     */
    @java.lang.Override
    public java.lang.String getUri() {
      java.lang.Object ref = uri_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        uri_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. URI for this repository.
     * </pre>
     *
     * <code>string uri = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for uri.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getUriBytes() {
      java.lang.Object ref = uri_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        uri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DISTRIBUTION_FIELD_NUMBER = 3;

    @SuppressWarnings("serial")
    private volatile java.lang.Object distribution_ = "";
    /**
     *
     *
     * <pre>
     * Required. Distribution of this repository.
     * </pre>
     *
     * <code>string distribution = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The distribution.
     */
    @java.lang.Override
    public java.lang.String getDistribution() {
      java.lang.Object ref = distribution_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        distribution_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. Distribution of this repository.
     * </pre>
     *
     * <code>string distribution = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for distribution.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getDistributionBytes() {
      java.lang.Object ref = distribution_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        distribution_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMPONENTS_FIELD_NUMBER = 4;

    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList components_;
    /**
     *
     *
     * <pre>
     * Required. List of components for this repository. Must contain at least one item.
     * </pre>
     *
     * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return A list containing the components.
     */
    public com.google.protobuf.ProtocolStringList getComponentsList() {
      return components_;
    }
    /**
     *
     *
     * <pre>
     * Required. List of components for this repository. Must contain at least one item.
     * </pre>
     *
     * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The count of components.
     */
    public int getComponentsCount() {
      return components_.size();
    }
    /**
     *
     *
     * <pre>
     * Required. List of components for this repository. Must contain at least one item.
     * </pre>
     *
     * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @param index The index of the element to return.
     * @return The components at the given index.
     */
    public java.lang.String getComponents(int index) {
      return components_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Required. List of components for this repository. Must contain at least one item.
     * </pre>
     *
     * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the components at the given index.
     */
    public com.google.protobuf.ByteString getComponentsBytes(int index) {
      return components_.getByteString(index);
    }

    public static final int GPG_KEY_FIELD_NUMBER = 5;

    @SuppressWarnings("serial")
    private volatile java.lang.Object gpgKey_ = "";
    /**
     *
     *
     * <pre>
     * URI of the key file for this repository. The agent maintains
     * a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing
     * all the keys in any applied guest policy.
     * </pre>
     *
     * <code>string gpg_key = 5;</code>
     *
     * @return The gpgKey.
     */
    @java.lang.Override
    public java.lang.String getGpgKey() {
      java.lang.Object ref = gpgKey_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        gpgKey_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * URI of the key file for this repository. The agent maintains
     * a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing
     * all the keys in any applied guest policy.
     * </pre>
     *
     * <code>string gpg_key = 5;</code>
     *
     * @return The bytes for gpgKey.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getGpgKeyBytes() {
      java.lang.Object ref = gpgKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        gpgKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (archiveType_
          != com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType
              .ARCHIVE_TYPE_UNSPECIFIED
              .getNumber()) {
        output.writeEnum(1, archiveType_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uri_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, uri_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(distribution_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, distribution_);
      }
      for (int i = 0; i < components_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, components_.getRaw(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(gpgKey_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, gpgKey_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (archiveType_
          != com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType
              .ARCHIVE_TYPE_UNSPECIFIED
              .getNumber()) {
        size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, archiveType_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uri_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, uri_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(distribution_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, distribution_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < components_.size(); i++) {
          dataSize += computeStringSizeNoTag(components_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getComponentsList().size();
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(gpgKey_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, gpgKey_);
      }
      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 com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) obj;

      if (archiveType_ != other.archiveType_) return false;
      if (!getUri().equals(other.getUri())) return false;
      if (!getDistribution().equals(other.getDistribution())) return false;
      if (!getComponentsList().equals(other.getComponentsList())) return false;
      if (!getGpgKey().equals(other.getGpgKey())) 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();
      hash = (37 * hash) + ARCHIVE_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + archiveType_;
      hash = (37 * hash) + URI_FIELD_NUMBER;
      hash = (53 * hash) + getUri().hashCode();
      hash = (37 * hash) + DISTRIBUTION_FIELD_NUMBER;
      hash = (53 * hash) + getDistribution().hashCode();
      if (getComponentsCount() > 0) {
        hash = (37 * hash) + COMPONENTS_FIELD_NUMBER;
        hash = (53 * hash) + getComponentsList().hashCode();
      }
      hash = (37 * hash) + GPG_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getGpgKey().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Represents a single Apt package repository. This repository is added to
     * a repo file that is stored at
     * `/etc/apt/sources.list.d/google_osconfig.list`.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.AptRepository}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.AptRepository)
        com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepositoryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_AptRepository_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_AptRepository_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.Builder.class);
      }

      // Construct using com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        archiveType_ = 0;
        uri_ = "";
        distribution_ = "";
        components_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        gpgKey_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_AptRepository_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(
          com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository result) {
        if (((bitField0_ & 0x00000008) != 0)) {
          components_ = components_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.components_ = components_;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.archiveType_ = archiveType_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.uri_ = uri_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.distribution_ = distribution_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.gpgKey_ = gpgKey_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) {
          return mergeFrom((com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.getDefaultInstance())
          return this;
        if (other.archiveType_ != 0) {
          setArchiveTypeValue(other.getArchiveTypeValue());
        }
        if (!other.getUri().isEmpty()) {
          uri_ = other.uri_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getDistribution().isEmpty()) {
          distribution_ = other.distribution_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.components_.isEmpty()) {
          if (components_.isEmpty()) {
            components_ = other.components_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureComponentsIsMutable();
            components_.addAll(other.components_);
          }
          onChanged();
        }
        if (!other.getGpgKey().isEmpty()) {
          gpgKey_ = other.gpgKey_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8:
                {
                  archiveType_ = input.readEnum();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
              case 18:
                {
                  uri_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
              case 26:
                {
                  distribution_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
              case 34:
                {
                  java.lang.String s = input.readStringRequireUtf8();
                  ensureComponentsIsMutable();
                  components_.add(s);
                  break;
                } // case 34
              case 42:
                {
                  gpgKey_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 42
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private int archiveType_ = 0;
      /**
       *
       *
       * <pre>
       * Type of archive files in this repository. The default behavior is DEB.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository.ArchiveType archive_type = 1;</code>
       *
       * @return The enum numeric value on the wire for archiveType.
       */
      @java.lang.Override
      public int getArchiveTypeValue() {
        return archiveType_;
      }
      /**
       *
       *
       * <pre>
       * Type of archive files in this repository. The default behavior is DEB.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository.ArchiveType archive_type = 1;</code>
       *
       * @param value The enum numeric value on the wire for archiveType to set.
       * @return This builder for chaining.
       */
      public Builder setArchiveTypeValue(int value) {
        archiveType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Type of archive files in this repository. The default behavior is DEB.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository.ArchiveType archive_type = 1;</code>
       *
       * @return The archiveType.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType
          getArchiveType() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType result =
            com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType.forNumber(
                archiveType_);
        return result == null
            ? com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType.UNRECOGNIZED
            : result;
      }
      /**
       *
       *
       * <pre>
       * Type of archive files in this repository. The default behavior is DEB.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository.ArchiveType archive_type = 1;</code>
       *
       * @param value The archiveType to set.
       * @return This builder for chaining.
       */
      public Builder setArchiveType(
          com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.ArchiveType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        archiveType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Type of archive files in this repository. The default behavior is DEB.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository.ArchiveType archive_type = 1;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearArchiveType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        archiveType_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object uri_ = "";
      /**
       *
       *
       * <pre>
       * Required. URI for this repository.
       * </pre>
       *
       * <code>string uri = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The uri.
       */
      public java.lang.String getUri() {
        java.lang.Object ref = uri_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          uri_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. URI for this repository.
       * </pre>
       *
       * <code>string uri = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for uri.
       */
      public com.google.protobuf.ByteString getUriBytes() {
        java.lang.Object ref = uri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          uri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. URI for this repository.
       * </pre>
       *
       * <code>string uri = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The uri to set.
       * @return This builder for chaining.
       */
      public Builder setUri(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        uri_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. URI for this repository.
       * </pre>
       *
       * <code>string uri = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUri() {
        uri_ = getDefaultInstance().getUri();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. URI for this repository.
       * </pre>
       *
       * <code>string uri = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes for uri to set.
       * @return This builder for chaining.
       */
      public Builder setUriBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        uri_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object distribution_ = "";
      /**
       *
       *
       * <pre>
       * Required. Distribution of this repository.
       * </pre>
       *
       * <code>string distribution = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The distribution.
       */
      public java.lang.String getDistribution() {
        java.lang.Object ref = distribution_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          distribution_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Distribution of this repository.
       * </pre>
       *
       * <code>string distribution = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for distribution.
       */
      public com.google.protobuf.ByteString getDistributionBytes() {
        java.lang.Object ref = distribution_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          distribution_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Distribution of this repository.
       * </pre>
       *
       * <code>string distribution = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The distribution to set.
       * @return This builder for chaining.
       */
      public Builder setDistribution(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        distribution_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Distribution of this repository.
       * </pre>
       *
       * <code>string distribution = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearDistribution() {
        distribution_ = getDefaultInstance().getDistribution();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Distribution of this repository.
       * </pre>
       *
       * <code>string distribution = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes for distribution to set.
       * @return This builder for chaining.
       */
      public Builder setDistributionBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        distribution_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList components_ =
          com.google.protobuf.LazyStringArrayList.EMPTY;

      private void ensureComponentsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          components_ = new com.google.protobuf.LazyStringArrayList(components_);
          bitField0_ |= 0x00000008;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. List of components for this repository. Must contain at least one item.
       * </pre>
       *
       * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return A list containing the components.
       */
      public com.google.protobuf.ProtocolStringList getComponentsList() {
        return components_.getUnmodifiableView();
      }
      /**
       *
       *
       * <pre>
       * Required. List of components for this repository. Must contain at least one item.
       * </pre>
       *
       * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The count of components.
       */
      public int getComponentsCount() {
        return components_.size();
      }
      /**
       *
       *
       * <pre>
       * Required. List of components for this repository. Must contain at least one item.
       * </pre>
       *
       * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param index The index of the element to return.
       * @return The components at the given index.
       */
      public java.lang.String getComponents(int index) {
        return components_.get(index);
      }
      /**
       *
       *
       * <pre>
       * Required. List of components for this repository. Must contain at least one item.
       * </pre>
       *
       * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param index The index of the value to return.
       * @return The bytes of the components at the given index.
       */
      public com.google.protobuf.ByteString getComponentsBytes(int index) {
        return components_.getByteString(index);
      }
      /**
       *
       *
       * <pre>
       * Required. List of components for this repository. Must contain at least one item.
       * </pre>
       *
       * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param index The index to set the value at.
       * @param value The components to set.
       * @return This builder for chaining.
       */
      public Builder setComponents(int index, java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureComponentsIsMutable();
        components_.set(index, value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. List of components for this repository. Must contain at least one item.
       * </pre>
       *
       * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The components to add.
       * @return This builder for chaining.
       */
      public Builder addComponents(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureComponentsIsMutable();
        components_.add(value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. List of components for this repository. Must contain at least one item.
       * </pre>
       *
       * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param values The components to add.
       * @return This builder for chaining.
       */
      public Builder addAllComponents(java.lang.Iterable<java.lang.String> values) {
        ensureComponentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, components_);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. List of components for this repository. Must contain at least one item.
       * </pre>
       *
       * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearComponents() {
        components_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. List of components for this repository. Must contain at least one item.
       * </pre>
       *
       * <code>repeated string components = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes of the components to add.
       * @return This builder for chaining.
       */
      public Builder addComponentsBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        ensureComponentsIsMutable();
        components_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object gpgKey_ = "";
      /**
       *
       *
       * <pre>
       * URI of the key file for this repository. The agent maintains
       * a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing
       * all the keys in any applied guest policy.
       * </pre>
       *
       * <code>string gpg_key = 5;</code>
       *
       * @return The gpgKey.
       */
      public java.lang.String getGpgKey() {
        java.lang.Object ref = gpgKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          gpgKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * URI of the key file for this repository. The agent maintains
       * a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing
       * all the keys in any applied guest policy.
       * </pre>
       *
       * <code>string gpg_key = 5;</code>
       *
       * @return The bytes for gpgKey.
       */
      public com.google.protobuf.ByteString getGpgKeyBytes() {
        java.lang.Object ref = gpgKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          gpgKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * URI of the key file for this repository. The agent maintains
       * a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing
       * all the keys in any applied guest policy.
       * </pre>
       *
       * <code>string gpg_key = 5;</code>
       *
       * @param value The gpgKey to set.
       * @return This builder for chaining.
       */
      public Builder setGpgKey(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        gpgKey_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URI of the key file for this repository. The agent maintains
       * a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing
       * all the keys in any applied guest policy.
       * </pre>
       *
       * <code>string gpg_key = 5;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearGpgKey() {
        gpgKey_ = getDefaultInstance().getGpgKey();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URI of the key file for this repository. The agent maintains
       * a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing
       * all the keys in any applied guest policy.
       * </pre>
       *
       * <code>string gpg_key = 5;</code>
       *
       * @param value The bytes for gpgKey to set.
       * @return This builder for chaining.
       */
      public Builder setGpgKeyBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        gpgKey_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.AptRepository)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.AptRepository)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface YumRepositoryOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.YumRepository)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. A one word, unique name for this repository. This is
     * the `repo id` in the Yum config file and also the `display_name` if
     * `display_name` is omitted. This id is also used as the unique identifier
     * when checking for guest policy conflicts.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The id.
     */
    java.lang.String getId();
    /**
     *
     *
     * <pre>
     * Required. A one word, unique name for this repository. This is
     * the `repo id` in the Yum config file and also the `display_name` if
     * `display_name` is omitted. This id is also used as the unique identifier
     * when checking for guest policy conflicts.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString getIdBytes();

    /**
     *
     *
     * <pre>
     * The display name of the repository.
     * </pre>
     *
     * <code>string display_name = 2;</code>
     *
     * @return The displayName.
     */
    java.lang.String getDisplayName();
    /**
     *
     *
     * <pre>
     * The display name of the repository.
     * </pre>
     *
     * <code>string display_name = 2;</code>
     *
     * @return The bytes for displayName.
     */
    com.google.protobuf.ByteString getDisplayNameBytes();

    /**
     *
     *
     * <pre>
     * Required. The location of the repository directory.
     * </pre>
     *
     * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The baseUrl.
     */
    java.lang.String getBaseUrl();
    /**
     *
     *
     * <pre>
     * Required. The location of the repository directory.
     * </pre>
     *
     * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for baseUrl.
     */
    com.google.protobuf.ByteString getBaseUrlBytes();

    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @return A list containing the gpgKeys.
     */
    java.util.List<java.lang.String> getGpgKeysList();
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @return The count of gpgKeys.
     */
    int getGpgKeysCount();
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @param index The index of the element to return.
     * @return The gpgKeys at the given index.
     */
    java.lang.String getGpgKeys(int index);
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the gpgKeys at the given index.
     */
    com.google.protobuf.ByteString getGpgKeysBytes(int index);
  }
  /**
   *
   *
   * <pre>
   * Represents a single Yum package repository. This repository is added to a
   * repo file that is stored at `/etc/yum.repos.d/google_osconfig.repo`.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.YumRepository}
   */
  public static final class YumRepository extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.YumRepository)
      YumRepositoryOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use YumRepository.newBuilder() to construct.
    private YumRepository(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private YumRepository() {
      id_ = "";
      displayName_ = "";
      baseUrl_ = "";
      gpgKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new YumRepository();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_YumRepository_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_YumRepository_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object id_ = "";
    /**
     *
     *
     * <pre>
     * Required. A one word, unique name for this repository. This is
     * the `repo id` in the Yum config file and also the `display_name` if
     * `display_name` is omitted. This id is also used as the unique identifier
     * when checking for guest policy conflicts.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. A one word, unique name for this repository. This is
     * the `repo id` in the Yum config file and also the `display_name` if
     * `display_name` is omitted. This id is also used as the unique identifier
     * when checking for guest policy conflicts.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DISPLAY_NAME_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private volatile java.lang.Object displayName_ = "";
    /**
     *
     *
     * <pre>
     * The display name of the repository.
     * </pre>
     *
     * <code>string display_name = 2;</code>
     *
     * @return The displayName.
     */
    @java.lang.Override
    public java.lang.String getDisplayName() {
      java.lang.Object ref = displayName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        displayName_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * The display name of the repository.
     * </pre>
     *
     * <code>string display_name = 2;</code>
     *
     * @return The bytes for displayName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getDisplayNameBytes() {
      java.lang.Object ref = displayName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        displayName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE_URL_FIELD_NUMBER = 3;

    @SuppressWarnings("serial")
    private volatile java.lang.Object baseUrl_ = "";
    /**
     *
     *
     * <pre>
     * Required. The location of the repository directory.
     * </pre>
     *
     * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The baseUrl.
     */
    @java.lang.Override
    public java.lang.String getBaseUrl() {
      java.lang.Object ref = baseUrl_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        baseUrl_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The location of the repository directory.
     * </pre>
     *
     * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for baseUrl.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getBaseUrlBytes() {
      java.lang.Object ref = baseUrl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        baseUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GPG_KEYS_FIELD_NUMBER = 4;

    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList gpgKeys_;
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @return A list containing the gpgKeys.
     */
    public com.google.protobuf.ProtocolStringList getGpgKeysList() {
      return gpgKeys_;
    }
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @return The count of gpgKeys.
     */
    public int getGpgKeysCount() {
      return gpgKeys_.size();
    }
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @param index The index of the element to return.
     * @return The gpgKeys at the given index.
     */
    public java.lang.String getGpgKeys(int index) {
      return gpgKeys_.get(index);
    }
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the gpgKeys at the given index.
     */
    public com.google.protobuf.ByteString getGpgKeysBytes(int index) {
      return gpgKeys_.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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(displayName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, displayName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(baseUrl_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, baseUrl_);
      }
      for (int i = 0; i < gpgKeys_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, gpgKeys_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(displayName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, displayName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(baseUrl_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, baseUrl_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < gpgKeys_.size(); i++) {
          dataSize += computeStringSizeNoTag(gpgKeys_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getGpgKeysList().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 com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) obj;

      if (!getId().equals(other.getId())) return false;
      if (!getDisplayName().equals(other.getDisplayName())) return false;
      if (!getBaseUrl().equals(other.getBaseUrl())) return false;
      if (!getGpgKeysList().equals(other.getGpgKeysList())) 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();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + DISPLAY_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getDisplayName().hashCode();
      hash = (37 * hash) + BASE_URL_FIELD_NUMBER;
      hash = (53 * hash) + getBaseUrl().hashCode();
      if (getGpgKeysCount() > 0) {
        hash = (37 * hash) + GPG_KEYS_FIELD_NUMBER;
        hash = (53 * hash) + getGpgKeysList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Represents a single Yum package repository. This repository is added to a
     * repo file that is stored at `/etc/yum.repos.d/google_osconfig.repo`.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.YumRepository}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.YumRepository)
        com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepositoryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_YumRepository_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_YumRepository_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.Builder.class);
      }

      // Construct using com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = "";
        displayName_ = "";
        baseUrl_ = "";
        gpgKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_YumRepository_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(
          com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository result) {
        if (((bitField0_ & 0x00000008) != 0)) {
          gpgKeys_ = gpgKeys_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.gpgKeys_ = gpgKeys_;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.displayName_ = displayName_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.baseUrl_ = baseUrl_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) {
          return mergeFrom((com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.getDefaultInstance())
          return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getDisplayName().isEmpty()) {
          displayName_ = other.displayName_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getBaseUrl().isEmpty()) {
          baseUrl_ = other.baseUrl_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.gpgKeys_.isEmpty()) {
          if (gpgKeys_.isEmpty()) {
            gpgKeys_ = other.gpgKeys_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureGpgKeysIsMutable();
            gpgKeys_.addAll(other.gpgKeys_);
          }
          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:
                {
                  id_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              case 18:
                {
                  displayName_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
              case 26:
                {
                  baseUrl_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
              case 34:
                {
                  java.lang.String s = input.readStringRequireUtf8();
                  ensureGpgKeysIsMutable();
                  gpgKeys_.add(s);
                  break;
                } // case 34
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.lang.Object id_ = "";
      /**
       *
       *
       * <pre>
       * Required. A one word, unique name for this repository. This is
       * the `repo id` in the Yum config file and also the `display_name` if
       * `display_name` is omitted. This id is also used as the unique identifier
       * when checking for guest policy conflicts.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. A one word, unique name for this repository. This is
       * the `repo id` in the Yum config file and also the `display_name` if
       * `display_name` is omitted. This id is also used as the unique identifier
       * when checking for guest policy conflicts.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. A one word, unique name for this repository. This is
       * the `repo id` in the Yum config file and also the `display_name` if
       * `display_name` is omitted. This id is also used as the unique identifier
       * when checking for guest policy conflicts.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. A one word, unique name for this repository. This is
       * the `repo id` in the Yum config file and also the `display_name` if
       * `display_name` is omitted. This id is also used as the unique identifier
       * when checking for guest policy conflicts.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearId() {
        id_ = getDefaultInstance().getId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. A one word, unique name for this repository. This is
       * the `repo id` in the Yum config file and also the `display_name` if
       * `display_name` is omitted. This id is also used as the unique identifier
       * when checking for guest policy conflicts.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object displayName_ = "";
      /**
       *
       *
       * <pre>
       * The display name of the repository.
       * </pre>
       *
       * <code>string display_name = 2;</code>
       *
       * @return The displayName.
       */
      public java.lang.String getDisplayName() {
        java.lang.Object ref = displayName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          displayName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * The display name of the repository.
       * </pre>
       *
       * <code>string display_name = 2;</code>
       *
       * @return The bytes for displayName.
       */
      public com.google.protobuf.ByteString getDisplayNameBytes() {
        java.lang.Object ref = displayName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          displayName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * The display name of the repository.
       * </pre>
       *
       * <code>string display_name = 2;</code>
       *
       * @param value The displayName to set.
       * @return This builder for chaining.
       */
      public Builder setDisplayName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        displayName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The display name of the repository.
       * </pre>
       *
       * <code>string display_name = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearDisplayName() {
        displayName_ = getDefaultInstance().getDisplayName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The display name of the repository.
       * </pre>
       *
       * <code>string display_name = 2;</code>
       *
       * @param value The bytes for displayName to set.
       * @return This builder for chaining.
       */
      public Builder setDisplayNameBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        displayName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object baseUrl_ = "";
      /**
       *
       *
       * <pre>
       * Required. The location of the repository directory.
       * </pre>
       *
       * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The baseUrl.
       */
      public java.lang.String getBaseUrl() {
        java.lang.Object ref = baseUrl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          baseUrl_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The location of the repository directory.
       * </pre>
       *
       * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for baseUrl.
       */
      public com.google.protobuf.ByteString getBaseUrlBytes() {
        java.lang.Object ref = baseUrl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          baseUrl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The location of the repository directory.
       * </pre>
       *
       * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The baseUrl to set.
       * @return This builder for chaining.
       */
      public Builder setBaseUrl(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        baseUrl_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The location of the repository directory.
       * </pre>
       *
       * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearBaseUrl() {
        baseUrl_ = getDefaultInstance().getBaseUrl();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The location of the repository directory.
       * </pre>
       *
       * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes for baseUrl to set.
       * @return This builder for chaining.
       */
      public Builder setBaseUrlBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        baseUrl_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList gpgKeys_ =
          com.google.protobuf.LazyStringArrayList.EMPTY;

      private void ensureGpgKeysIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          gpgKeys_ = new com.google.protobuf.LazyStringArrayList(gpgKeys_);
          bitField0_ |= 0x00000008;
        }
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @return A list containing the gpgKeys.
       */
      public com.google.protobuf.ProtocolStringList getGpgKeysList() {
        return gpgKeys_.getUnmodifiableView();
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @return The count of gpgKeys.
       */
      public int getGpgKeysCount() {
        return gpgKeys_.size();
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param index The index of the element to return.
       * @return The gpgKeys at the given index.
       */
      public java.lang.String getGpgKeys(int index) {
        return gpgKeys_.get(index);
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param index The index of the value to return.
       * @return The bytes of the gpgKeys at the given index.
       */
      public com.google.protobuf.ByteString getGpgKeysBytes(int index) {
        return gpgKeys_.getByteString(index);
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param index The index to set the value at.
       * @param value The gpgKeys to set.
       * @return This builder for chaining.
       */
      public Builder setGpgKeys(int index, java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureGpgKeysIsMutable();
        gpgKeys_.set(index, value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param value The gpgKeys to add.
       * @return This builder for chaining.
       */
      public Builder addGpgKeys(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureGpgKeysIsMutable();
        gpgKeys_.add(value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param values The gpgKeys to add.
       * @return This builder for chaining.
       */
      public Builder addAllGpgKeys(java.lang.Iterable<java.lang.String> values) {
        ensureGpgKeysIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, gpgKeys_);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearGpgKeys() {
        gpgKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param value The bytes of the gpgKeys to add.
       * @return This builder for chaining.
       */
      public Builder addGpgKeysBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        ensureGpgKeysIsMutable();
        gpgKeys_.add(value);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.YumRepository)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.YumRepository)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface ZypperRepositoryOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.ZypperRepository)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. A one word, unique name for this repository. This is
     * the `repo id` in the zypper config file and also the `display_name` if
     * `display_name` is omitted. This id is also used as the unique identifier
     * when checking for guest policy conflicts.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The id.
     */
    java.lang.String getId();
    /**
     *
     *
     * <pre>
     * Required. A one word, unique name for this repository. This is
     * the `repo id` in the zypper config file and also the `display_name` if
     * `display_name` is omitted. This id is also used as the unique identifier
     * when checking for guest policy conflicts.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString getIdBytes();

    /**
     *
     *
     * <pre>
     * The display name of the repository.
     * </pre>
     *
     * <code>string display_name = 2;</code>
     *
     * @return The displayName.
     */
    java.lang.String getDisplayName();
    /**
     *
     *
     * <pre>
     * The display name of the repository.
     * </pre>
     *
     * <code>string display_name = 2;</code>
     *
     * @return The bytes for displayName.
     */
    com.google.protobuf.ByteString getDisplayNameBytes();

    /**
     *
     *
     * <pre>
     * Required. The location of the repository directory.
     * </pre>
     *
     * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The baseUrl.
     */
    java.lang.String getBaseUrl();
    /**
     *
     *
     * <pre>
     * Required. The location of the repository directory.
     * </pre>
     *
     * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for baseUrl.
     */
    com.google.protobuf.ByteString getBaseUrlBytes();

    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @return A list containing the gpgKeys.
     */
    java.util.List<java.lang.String> getGpgKeysList();
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @return The count of gpgKeys.
     */
    int getGpgKeysCount();
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @param index The index of the element to return.
     * @return The gpgKeys at the given index.
     */
    java.lang.String getGpgKeys(int index);
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the gpgKeys at the given index.
     */
    com.google.protobuf.ByteString getGpgKeysBytes(int index);
  }
  /**
   *
   *
   * <pre>
   * Represents a single Zypper package repository. This repository is added to a
   * repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.ZypperRepository}
   */
  public static final class ZypperRepository extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.ZypperRepository)
      ZypperRepositoryOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use ZypperRepository.newBuilder() to construct.
    private ZypperRepository(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private ZypperRepository() {
      id_ = "";
      displayName_ = "";
      baseUrl_ = "";
      gpgKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new ZypperRepository();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_ZypperRepository_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_ZypperRepository_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object id_ = "";
    /**
     *
     *
     * <pre>
     * Required. A one word, unique name for this repository. This is
     * the `repo id` in the zypper config file and also the `display_name` if
     * `display_name` is omitted. This id is also used as the unique identifier
     * when checking for guest policy conflicts.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. A one word, unique name for this repository. This is
     * the `repo id` in the zypper config file and also the `display_name` if
     * `display_name` is omitted. This id is also used as the unique identifier
     * when checking for guest policy conflicts.
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DISPLAY_NAME_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private volatile java.lang.Object displayName_ = "";
    /**
     *
     *
     * <pre>
     * The display name of the repository.
     * </pre>
     *
     * <code>string display_name = 2;</code>
     *
     * @return The displayName.
     */
    @java.lang.Override
    public java.lang.String getDisplayName() {
      java.lang.Object ref = displayName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        displayName_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * The display name of the repository.
     * </pre>
     *
     * <code>string display_name = 2;</code>
     *
     * @return The bytes for displayName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getDisplayNameBytes() {
      java.lang.Object ref = displayName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        displayName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BASE_URL_FIELD_NUMBER = 3;

    @SuppressWarnings("serial")
    private volatile java.lang.Object baseUrl_ = "";
    /**
     *
     *
     * <pre>
     * Required. The location of the repository directory.
     * </pre>
     *
     * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The baseUrl.
     */
    @java.lang.Override
    public java.lang.String getBaseUrl() {
      java.lang.Object ref = baseUrl_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        baseUrl_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The location of the repository directory.
     * </pre>
     *
     * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for baseUrl.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getBaseUrlBytes() {
      java.lang.Object ref = baseUrl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        baseUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GPG_KEYS_FIELD_NUMBER = 4;

    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList gpgKeys_;
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @return A list containing the gpgKeys.
     */
    public com.google.protobuf.ProtocolStringList getGpgKeysList() {
      return gpgKeys_;
    }
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @return The count of gpgKeys.
     */
    public int getGpgKeysCount() {
      return gpgKeys_.size();
    }
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @param index The index of the element to return.
     * @return The gpgKeys at the given index.
     */
    public java.lang.String getGpgKeys(int index) {
      return gpgKeys_.get(index);
    }
    /**
     *
     *
     * <pre>
     * URIs of GPG keys.
     * </pre>
     *
     * <code>repeated string gpg_keys = 4;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the gpgKeys at the given index.
     */
    public com.google.protobuf.ByteString getGpgKeysBytes(int index) {
      return gpgKeys_.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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(displayName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, displayName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(baseUrl_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, baseUrl_);
      }
      for (int i = 0; i < gpgKeys_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, gpgKeys_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(displayName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, displayName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(baseUrl_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, baseUrl_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < gpgKeys_.size(); i++) {
          dataSize += computeStringSizeNoTag(gpgKeys_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getGpgKeysList().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 com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository) obj;

      if (!getId().equals(other.getId())) return false;
      if (!getDisplayName().equals(other.getDisplayName())) return false;
      if (!getBaseUrl().equals(other.getBaseUrl())) return false;
      if (!getGpgKeysList().equals(other.getGpgKeysList())) 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();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + DISPLAY_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getDisplayName().hashCode();
      hash = (37 * hash) + BASE_URL_FIELD_NUMBER;
      hash = (53 * hash) + getBaseUrl().hashCode();
      if (getGpgKeysCount() > 0) {
        hash = (37 * hash) + GPG_KEYS_FIELD_NUMBER;
        hash = (53 * hash) + getGpgKeysList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Represents a single Zypper package repository. This repository is added to a
     * repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.ZypperRepository}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.ZypperRepository)
        com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepositoryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_ZypperRepository_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_ZypperRepository_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.Builder.class);
      }

      // Construct using
      // com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = "";
        displayName_ = "";
        baseUrl_ = "";
        gpgKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_ZypperRepository_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository result) {
        if (((bitField0_ & 0x00000008) != 0)) {
          gpgKeys_ = gpgKeys_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.gpgKeys_ = gpgKeys_;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.displayName_ = displayName_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.baseUrl_ = baseUrl_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository) {
          return mergeFrom((com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.getDefaultInstance())
          return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getDisplayName().isEmpty()) {
          displayName_ = other.displayName_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getBaseUrl().isEmpty()) {
          baseUrl_ = other.baseUrl_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.gpgKeys_.isEmpty()) {
          if (gpgKeys_.isEmpty()) {
            gpgKeys_ = other.gpgKeys_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureGpgKeysIsMutable();
            gpgKeys_.addAll(other.gpgKeys_);
          }
          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:
                {
                  id_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              case 18:
                {
                  displayName_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
              case 26:
                {
                  baseUrl_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
              case 34:
                {
                  java.lang.String s = input.readStringRequireUtf8();
                  ensureGpgKeysIsMutable();
                  gpgKeys_.add(s);
                  break;
                } // case 34
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.lang.Object id_ = "";
      /**
       *
       *
       * <pre>
       * Required. A one word, unique name for this repository. This is
       * the `repo id` in the zypper config file and also the `display_name` if
       * `display_name` is omitted. This id is also used as the unique identifier
       * when checking for guest policy conflicts.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. A one word, unique name for this repository. This is
       * the `repo id` in the zypper config file and also the `display_name` if
       * `display_name` is omitted. This id is also used as the unique identifier
       * when checking for guest policy conflicts.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. A one word, unique name for this repository. This is
       * the `repo id` in the zypper config file and also the `display_name` if
       * `display_name` is omitted. This id is also used as the unique identifier
       * when checking for guest policy conflicts.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. A one word, unique name for this repository. This is
       * the `repo id` in the zypper config file and also the `display_name` if
       * `display_name` is omitted. This id is also used as the unique identifier
       * when checking for guest policy conflicts.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearId() {
        id_ = getDefaultInstance().getId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. A one word, unique name for this repository. This is
       * the `repo id` in the zypper config file and also the `display_name` if
       * `display_name` is omitted. This id is also used as the unique identifier
       * when checking for guest policy conflicts.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object displayName_ = "";
      /**
       *
       *
       * <pre>
       * The display name of the repository.
       * </pre>
       *
       * <code>string display_name = 2;</code>
       *
       * @return The displayName.
       */
      public java.lang.String getDisplayName() {
        java.lang.Object ref = displayName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          displayName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * The display name of the repository.
       * </pre>
       *
       * <code>string display_name = 2;</code>
       *
       * @return The bytes for displayName.
       */
      public com.google.protobuf.ByteString getDisplayNameBytes() {
        java.lang.Object ref = displayName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          displayName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * The display name of the repository.
       * </pre>
       *
       * <code>string display_name = 2;</code>
       *
       * @param value The displayName to set.
       * @return This builder for chaining.
       */
      public Builder setDisplayName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        displayName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The display name of the repository.
       * </pre>
       *
       * <code>string display_name = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearDisplayName() {
        displayName_ = getDefaultInstance().getDisplayName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The display name of the repository.
       * </pre>
       *
       * <code>string display_name = 2;</code>
       *
       * @param value The bytes for displayName to set.
       * @return This builder for chaining.
       */
      public Builder setDisplayNameBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        displayName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object baseUrl_ = "";
      /**
       *
       *
       * <pre>
       * Required. The location of the repository directory.
       * </pre>
       *
       * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The baseUrl.
       */
      public java.lang.String getBaseUrl() {
        java.lang.Object ref = baseUrl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          baseUrl_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The location of the repository directory.
       * </pre>
       *
       * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for baseUrl.
       */
      public com.google.protobuf.ByteString getBaseUrlBytes() {
        java.lang.Object ref = baseUrl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          baseUrl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The location of the repository directory.
       * </pre>
       *
       * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The baseUrl to set.
       * @return This builder for chaining.
       */
      public Builder setBaseUrl(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        baseUrl_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The location of the repository directory.
       * </pre>
       *
       * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearBaseUrl() {
        baseUrl_ = getDefaultInstance().getBaseUrl();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The location of the repository directory.
       * </pre>
       *
       * <code>string base_url = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes for baseUrl to set.
       * @return This builder for chaining.
       */
      public Builder setBaseUrlBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        baseUrl_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList gpgKeys_ =
          com.google.protobuf.LazyStringArrayList.EMPTY;

      private void ensureGpgKeysIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          gpgKeys_ = new com.google.protobuf.LazyStringArrayList(gpgKeys_);
          bitField0_ |= 0x00000008;
        }
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @return A list containing the gpgKeys.
       */
      public com.google.protobuf.ProtocolStringList getGpgKeysList() {
        return gpgKeys_.getUnmodifiableView();
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @return The count of gpgKeys.
       */
      public int getGpgKeysCount() {
        return gpgKeys_.size();
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param index The index of the element to return.
       * @return The gpgKeys at the given index.
       */
      public java.lang.String getGpgKeys(int index) {
        return gpgKeys_.get(index);
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param index The index of the value to return.
       * @return The bytes of the gpgKeys at the given index.
       */
      public com.google.protobuf.ByteString getGpgKeysBytes(int index) {
        return gpgKeys_.getByteString(index);
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param index The index to set the value at.
       * @param value The gpgKeys to set.
       * @return This builder for chaining.
       */
      public Builder setGpgKeys(int index, java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureGpgKeysIsMutable();
        gpgKeys_.set(index, value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param value The gpgKeys to add.
       * @return This builder for chaining.
       */
      public Builder addGpgKeys(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureGpgKeysIsMutable();
        gpgKeys_.add(value);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param values The gpgKeys to add.
       * @return This builder for chaining.
       */
      public Builder addAllGpgKeys(java.lang.Iterable<java.lang.String> values) {
        ensureGpgKeysIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, gpgKeys_);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearGpgKeys() {
        gpgKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URIs of GPG keys.
       * </pre>
       *
       * <code>repeated string gpg_keys = 4;</code>
       *
       * @param value The bytes of the gpgKeys to add.
       * @return This builder for chaining.
       */
      public Builder addGpgKeysBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        ensureGpgKeysIsMutable();
        gpgKeys_.add(value);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.ZypperRepository)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.ZypperRepository)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface GooRepositoryOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.GooRepository)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. The name of the repository.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The name.
     */
    java.lang.String getName();
    /**
     *
     *
     * <pre>
     * Required. The name of the repository.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString getNameBytes();

    /**
     *
     *
     * <pre>
     * Required. The url of the repository.
     * </pre>
     *
     * <code>string url = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The url.
     */
    java.lang.String getUrl();
    /**
     *
     *
     * <pre>
     * Required. The url of the repository.
     * </pre>
     *
     * <code>string url = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for url.
     */
    com.google.protobuf.ByteString getUrlBytes();
  }
  /**
   *
   *
   * <pre>
   * Represents a Goo package repository. These is added to a repo file
   * that is stored at C:/ProgramData/GooGet/repos/google_osconfig.repo.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.GooRepository}
   */
  public static final class GooRepository extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.GooRepository)
      GooRepositoryOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use GooRepository.newBuilder() to construct.
    private GooRepository(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private GooRepository() {
      name_ = "";
      url_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new GooRepository();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_GooRepository_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_GooRepository_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     *
     *
     * <pre>
     * Required. The name of the repository.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
        name_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The name of the repository.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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 URL_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private volatile java.lang.Object url_ = "";
    /**
     *
     *
     * <pre>
     * Required. The url of the repository.
     * </pre>
     *
     * <code>string url = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The url.
     */
    @java.lang.Override
    public java.lang.String getUrl() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        url_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The url of the repository.
     * </pre>
     *
     * <code>string url = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for url.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getUrlBytes() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        url_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, url_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, url_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) obj;

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

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

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Represents a Goo package repository. These is added to a repo file
     * that is stored at C:/ProgramData/GooGet/repos/google_osconfig.repo.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.GooRepository}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.GooRepository)
        com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepositoryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_GooRepository_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_GooRepository_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.Builder.class);
      }

      // Construct using com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.newBuilder()
      private Builder() {}

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_GooRepository_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.url_ = url_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) {
          return mergeFrom((com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.getDefaultInstance())
          return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getUrl().isEmpty()) {
          url_ = other.url_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       *
       *
       * <pre>
       * Required. The name of the repository.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the repository.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the repository.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the repository.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The name of the repository.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
        }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object url_ = "";
      /**
       *
       *
       * <pre>
       * Required. The url of the repository.
       * </pre>
       *
       * <code>string url = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The url.
       */
      public java.lang.String getUrl() {
        java.lang.Object ref = url_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          url_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The url of the repository.
       * </pre>
       *
       * <code>string url = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for url.
       */
      public com.google.protobuf.ByteString getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          url_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The url of the repository.
       * </pre>
       *
       * <code>string url = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The url to set.
       * @return This builder for chaining.
       */
      public Builder setUrl(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        url_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The url of the repository.
       * </pre>
       *
       * <code>string url = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearUrl() {
        url_ = getDefaultInstance().getUrl();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The url of the repository.
       * </pre>
       *
       * <code>string url = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes for url to set.
       * @return This builder for chaining.
       */
      public Builder setUrlBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        url_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.GooRepository)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.GooRepository)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface PackageRepositoryOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.PackageRepository)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * An Apt Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
     *
     * @return Whether the apt field is set.
     */
    boolean hasApt();
    /**
     *
     *
     * <pre>
     * An Apt Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
     *
     * @return The apt.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository getApt();
    /**
     *
     *
     * <pre>
     * An Apt Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepositoryOrBuilder getAptOrBuilder();

    /**
     *
     *
     * <pre>
     * A Yum Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
     *
     * @return Whether the yum field is set.
     */
    boolean hasYum();
    /**
     *
     *
     * <pre>
     * A Yum Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
     *
     * @return The yum.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository getYum();
    /**
     *
     *
     * <pre>
     * A Yum Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepositoryOrBuilder getYumOrBuilder();

    /**
     *
     *
     * <pre>
     * A Zypper Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
     *
     * @return Whether the zypper field is set.
     */
    boolean hasZypper();
    /**
     *
     *
     * <pre>
     * A Zypper Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
     *
     * @return The zypper.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository getZypper();
    /**
     *
     *
     * <pre>
     * A Zypper Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepositoryOrBuilder getZypperOrBuilder();

    /**
     *
     *
     * <pre>
     * A Goo Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
     *
     * @return Whether the goo field is set.
     */
    boolean hasGoo();
    /**
     *
     *
     * <pre>
     * A Goo Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
     *
     * @return The goo.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository getGoo();
    /**
     *
     *
     * <pre>
     * A Goo Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepositoryOrBuilder getGooOrBuilder();

    public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.RepositoryCase
        getRepositoryCase();
  }
  /**
   *
   *
   * <pre>
   * A package repository.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.PackageRepository}
   */
  public static final class PackageRepository extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.PackageRepository)
      PackageRepositoryOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use PackageRepository.newBuilder() to construct.
    private PackageRepository(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private PackageRepository() {}

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new PackageRepository();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_PackageRepository_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_PackageRepository_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder.class);
    }

    private int repositoryCase_ = 0;
    private java.lang.Object repository_;

    public enum RepositoryCase
        implements
            com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      APT(1),
      YUM(2),
      ZYPPER(3),
      GOO(4),
      REPOSITORY_NOT_SET(0);
      private final int value;

      private RepositoryCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static RepositoryCase valueOf(int value) {
        return forNumber(value);
      }

      public static RepositoryCase forNumber(int value) {
        switch (value) {
          case 1:
            return APT;
          case 2:
            return YUM;
          case 3:
            return ZYPPER;
          case 4:
            return GOO;
          case 0:
            return REPOSITORY_NOT_SET;
          default:
            return null;
        }
      }

      public int getNumber() {
        return this.value;
      }
    };

    public RepositoryCase getRepositoryCase() {
      return RepositoryCase.forNumber(repositoryCase_);
    }

    public static final int APT_FIELD_NUMBER = 1;
    /**
     *
     *
     * <pre>
     * An Apt Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
     *
     * @return Whether the apt field is set.
     */
    @java.lang.Override
    public boolean hasApt() {
      return repositoryCase_ == 1;
    }
    /**
     *
     *
     * <pre>
     * An Apt Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
     *
     * @return The apt.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository getApt() {
      if (repositoryCase_ == 1) {
        return (com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) repository_;
      }
      return com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.getDefaultInstance();
    }
    /**
     *
     *
     * <pre>
     * An Apt Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepositoryOrBuilder getAptOrBuilder() {
      if (repositoryCase_ == 1) {
        return (com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) repository_;
      }
      return com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.getDefaultInstance();
    }

    public static final int YUM_FIELD_NUMBER = 2;
    /**
     *
     *
     * <pre>
     * A Yum Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
     *
     * @return Whether the yum field is set.
     */
    @java.lang.Override
    public boolean hasYum() {
      return repositoryCase_ == 2;
    }
    /**
     *
     *
     * <pre>
     * A Yum Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
     *
     * @return The yum.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository getYum() {
      if (repositoryCase_ == 2) {
        return (com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) repository_;
      }
      return com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.getDefaultInstance();
    }
    /**
     *
     *
     * <pre>
     * A Yum Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepositoryOrBuilder getYumOrBuilder() {
      if (repositoryCase_ == 2) {
        return (com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) repository_;
      }
      return com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.getDefaultInstance();
    }

    public static final int ZYPPER_FIELD_NUMBER = 3;
    /**
     *
     *
     * <pre>
     * A Zypper Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
     *
     * @return Whether the zypper field is set.
     */
    @java.lang.Override
    public boolean hasZypper() {
      return repositoryCase_ == 3;
    }
    /**
     *
     *
     * <pre>
     * A Zypper Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
     *
     * @return The zypper.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository getZypper() {
      if (repositoryCase_ == 3) {
        return (com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository) repository_;
      }
      return com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.getDefaultInstance();
    }
    /**
     *
     *
     * <pre>
     * A Zypper Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepositoryOrBuilder
        getZypperOrBuilder() {
      if (repositoryCase_ == 3) {
        return (com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository) repository_;
      }
      return com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.getDefaultInstance();
    }

    public static final int GOO_FIELD_NUMBER = 4;
    /**
     *
     *
     * <pre>
     * A Goo Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
     *
     * @return Whether the goo field is set.
     */
    @java.lang.Override
    public boolean hasGoo() {
      return repositoryCase_ == 4;
    }
    /**
     *
     *
     * <pre>
     * A Goo Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
     *
     * @return The goo.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository getGoo() {
      if (repositoryCase_ == 4) {
        return (com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) repository_;
      }
      return com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.getDefaultInstance();
    }
    /**
     *
     *
     * <pre>
     * A Goo Repository.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepositoryOrBuilder getGooOrBuilder() {
      if (repositoryCase_ == 4) {
        return (com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) repository_;
      }
      return com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.getDefaultInstance();
    }

    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 (repositoryCase_ == 1) {
        output.writeMessage(
            1, (com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) repository_);
      }
      if (repositoryCase_ == 2) {
        output.writeMessage(
            2, (com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) repository_);
      }
      if (repositoryCase_ == 3) {
        output.writeMessage(
            3, (com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository) repository_);
      }
      if (repositoryCase_ == 4) {
        output.writeMessage(
            4, (com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) repository_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (repositoryCase_ == 1) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                1, (com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) repository_);
      }
      if (repositoryCase_ == 2) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                2, (com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) repository_);
      }
      if (repositoryCase_ == 3) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                3, (com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository) repository_);
      }
      if (repositoryCase_ == 4) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                4, (com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) repository_);
      }
      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 com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository) obj;

      if (!getRepositoryCase().equals(other.getRepositoryCase())) return false;
      switch (repositoryCase_) {
        case 1:
          if (!getApt().equals(other.getApt())) return false;
          break;
        case 2:
          if (!getYum().equals(other.getYum())) return false;
          break;
        case 3:
          if (!getZypper().equals(other.getZypper())) return false;
          break;
        case 4:
          if (!getGoo().equals(other.getGoo())) return false;
          break;
        case 0:
        default:
      }
      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();
      switch (repositoryCase_) {
        case 1:
          hash = (37 * hash) + APT_FIELD_NUMBER;
          hash = (53 * hash) + getApt().hashCode();
          break;
        case 2:
          hash = (37 * hash) + YUM_FIELD_NUMBER;
          hash = (53 * hash) + getYum().hashCode();
          break;
        case 3:
          hash = (37 * hash) + ZYPPER_FIELD_NUMBER;
          hash = (53 * hash) + getZypper().hashCode();
          break;
        case 4:
          hash = (37 * hash) + GOO_FIELD_NUMBER;
          hash = (53 * hash) + getGoo().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * A package repository.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.PackageRepository}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.PackageRepository)
        com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_PackageRepository_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_PackageRepository_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder.class);
      }

      // Construct using
      // com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (aptBuilder_ != null) {
          aptBuilder_.clear();
        }
        if (yumBuilder_ != null) {
          yumBuilder_.clear();
        }
        if (zypperBuilder_ != null) {
          zypperBuilder_.clear();
        }
        if (gooBuilder_ != null) {
          gooBuilder_.clear();
        }
        repositoryCase_ = 0;
        repository_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_PackageRepository_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(
          com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository result) {
        result.repositoryCase_ = repositoryCase_;
        result.repository_ = this.repository_;
        if (repositoryCase_ == 1 && aptBuilder_ != null) {
          result.repository_ = aptBuilder_.build();
        }
        if (repositoryCase_ == 2 && yumBuilder_ != null) {
          result.repository_ = yumBuilder_.build();
        }
        if (repositoryCase_ == 3 && zypperBuilder_ != null) {
          result.repository_ = zypperBuilder_.build();
        }
        if (repositoryCase_ == 4 && gooBuilder_ != null) {
          result.repository_ = gooBuilder_.build();
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository) {
          return mergeFrom(
              (com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
                .getDefaultInstance()) return this;
        switch (other.getRepositoryCase()) {
          case APT:
            {
              mergeApt(other.getApt());
              break;
            }
          case YUM:
            {
              mergeYum(other.getYum());
              break;
            }
          case ZYPPER:
            {
              mergeZypper(other.getZypper());
              break;
            }
          case GOO:
            {
              mergeGoo(other.getGoo());
              break;
            }
          case REPOSITORY_NOT_SET:
            {
              break;
            }
        }
        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(getAptFieldBuilder().getBuilder(), extensionRegistry);
                  repositoryCase_ = 1;
                  break;
                } // case 10
              case 18:
                {
                  input.readMessage(getYumFieldBuilder().getBuilder(), extensionRegistry);
                  repositoryCase_ = 2;
                  break;
                } // case 18
              case 26:
                {
                  input.readMessage(getZypperFieldBuilder().getBuilder(), extensionRegistry);
                  repositoryCase_ = 3;
                  break;
                } // case 26
              case 34:
                {
                  input.readMessage(getGooFieldBuilder().getBuilder(), extensionRegistry);
                  repositoryCase_ = 4;
                  break;
                } // case 34
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int repositoryCase_ = 0;
      private java.lang.Object repository_;

      public RepositoryCase getRepositoryCase() {
        return RepositoryCase.forNumber(repositoryCase_);
      }

      public Builder clearRepository() {
        repositoryCase_ = 0;
        repository_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepositoryOrBuilder>
          aptBuilder_;
      /**
       *
       *
       * <pre>
       * An Apt Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
       *
       * @return Whether the apt field is set.
       */
      @java.lang.Override
      public boolean hasApt() {
        return repositoryCase_ == 1;
      }
      /**
       *
       *
       * <pre>
       * An Apt Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
       *
       * @return The apt.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository getApt() {
        if (aptBuilder_ == null) {
          if (repositoryCase_ == 1) {
            return (com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) repository_;
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.getDefaultInstance();
        } else {
          if (repositoryCase_ == 1) {
            return aptBuilder_.getMessage();
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * An Apt Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
       */
      public Builder setApt(com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository value) {
        if (aptBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          repository_ = value;
          onChanged();
        } else {
          aptBuilder_.setMessage(value);
        }
        repositoryCase_ = 1;
        return this;
      }
      /**
       *
       *
       * <pre>
       * An Apt Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
       */
      public Builder setApt(
          com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.Builder builderForValue) {
        if (aptBuilder_ == null) {
          repository_ = builderForValue.build();
          onChanged();
        } else {
          aptBuilder_.setMessage(builderForValue.build());
        }
        repositoryCase_ = 1;
        return this;
      }
      /**
       *
       *
       * <pre>
       * An Apt Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
       */
      public Builder mergeApt(com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository value) {
        if (aptBuilder_ == null) {
          if (repositoryCase_ == 1
              && repository_
                  != com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository
                      .getDefaultInstance()) {
            repository_ =
                com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.newBuilder(
                        (com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) repository_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            repository_ = value;
          }
          onChanged();
        } else {
          if (repositoryCase_ == 1) {
            aptBuilder_.mergeFrom(value);
          } else {
            aptBuilder_.setMessage(value);
          }
        }
        repositoryCase_ = 1;
        return this;
      }
      /**
       *
       *
       * <pre>
       * An Apt Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
       */
      public Builder clearApt() {
        if (aptBuilder_ == null) {
          if (repositoryCase_ == 1) {
            repositoryCase_ = 0;
            repository_ = null;
            onChanged();
          }
        } else {
          if (repositoryCase_ == 1) {
            repositoryCase_ = 0;
            repository_ = null;
          }
          aptBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * An Apt Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.Builder getAptBuilder() {
        return getAptFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * An Apt Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepositoryOrBuilder
          getAptOrBuilder() {
        if ((repositoryCase_ == 1) && (aptBuilder_ != null)) {
          return aptBuilder_.getMessageOrBuilder();
        } else {
          if (repositoryCase_ == 1) {
            return (com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) repository_;
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * An Apt Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.AptRepository apt = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepositoryOrBuilder>
          getAptFieldBuilder() {
        if (aptBuilder_ == null) {
          if (!(repositoryCase_ == 1)) {
            repository_ =
                com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.getDefaultInstance();
          }
          aptBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepositoryOrBuilder>(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.AptRepository) repository_,
                  getParentForChildren(),
                  isClean());
          repository_ = null;
        }
        repositoryCase_ = 1;
        onChanged();
        return aptBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepositoryOrBuilder>
          yumBuilder_;
      /**
       *
       *
       * <pre>
       * A Yum Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
       *
       * @return Whether the yum field is set.
       */
      @java.lang.Override
      public boolean hasYum() {
        return repositoryCase_ == 2;
      }
      /**
       *
       *
       * <pre>
       * A Yum Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
       *
       * @return The yum.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository getYum() {
        if (yumBuilder_ == null) {
          if (repositoryCase_ == 2) {
            return (com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) repository_;
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.getDefaultInstance();
        } else {
          if (repositoryCase_ == 2) {
            return yumBuilder_.getMessage();
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * A Yum Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
       */
      public Builder setYum(com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository value) {
        if (yumBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          repository_ = value;
          onChanged();
        } else {
          yumBuilder_.setMessage(value);
        }
        repositoryCase_ = 2;
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Yum Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
       */
      public Builder setYum(
          com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.Builder builderForValue) {
        if (yumBuilder_ == null) {
          repository_ = builderForValue.build();
          onChanged();
        } else {
          yumBuilder_.setMessage(builderForValue.build());
        }
        repositoryCase_ = 2;
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Yum Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
       */
      public Builder mergeYum(com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository value) {
        if (yumBuilder_ == null) {
          if (repositoryCase_ == 2
              && repository_
                  != com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository
                      .getDefaultInstance()) {
            repository_ =
                com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.newBuilder(
                        (com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) repository_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            repository_ = value;
          }
          onChanged();
        } else {
          if (repositoryCase_ == 2) {
            yumBuilder_.mergeFrom(value);
          } else {
            yumBuilder_.setMessage(value);
          }
        }
        repositoryCase_ = 2;
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Yum Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
       */
      public Builder clearYum() {
        if (yumBuilder_ == null) {
          if (repositoryCase_ == 2) {
            repositoryCase_ = 0;
            repository_ = null;
            onChanged();
          }
        } else {
          if (repositoryCase_ == 2) {
            repositoryCase_ = 0;
            repository_ = null;
          }
          yumBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Yum Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.Builder getYumBuilder() {
        return getYumFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * A Yum Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepositoryOrBuilder
          getYumOrBuilder() {
        if ((repositoryCase_ == 2) && (yumBuilder_ != null)) {
          return yumBuilder_.getMessageOrBuilder();
        } else {
          if (repositoryCase_ == 2) {
            return (com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) repository_;
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * A Yum Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.YumRepository yum = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepositoryOrBuilder>
          getYumFieldBuilder() {
        if (yumBuilder_ == null) {
          if (!(repositoryCase_ == 2)) {
            repository_ =
                com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.getDefaultInstance();
          }
          yumBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepositoryOrBuilder>(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.YumRepository) repository_,
                  getParentForChildren(),
                  isClean());
          repository_ = null;
        }
        repositoryCase_ = 2;
        onChanged();
        return yumBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepositoryOrBuilder>
          zypperBuilder_;
      /**
       *
       *
       * <pre>
       * A Zypper Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
       *
       * @return Whether the zypper field is set.
       */
      @java.lang.Override
      public boolean hasZypper() {
        return repositoryCase_ == 3;
      }
      /**
       *
       *
       * <pre>
       * A Zypper Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
       *
       * @return The zypper.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository getZypper() {
        if (zypperBuilder_ == null) {
          if (repositoryCase_ == 3) {
            return (com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository) repository_;
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
              .getDefaultInstance();
        } else {
          if (repositoryCase_ == 3) {
            return zypperBuilder_.getMessage();
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
              .getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * A Zypper Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
       */
      public Builder setZypper(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository value) {
        if (zypperBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          repository_ = value;
          onChanged();
        } else {
          zypperBuilder_.setMessage(value);
        }
        repositoryCase_ = 3;
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Zypper Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
       */
      public Builder setZypper(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.Builder builderForValue) {
        if (zypperBuilder_ == null) {
          repository_ = builderForValue.build();
          onChanged();
        } else {
          zypperBuilder_.setMessage(builderForValue.build());
        }
        repositoryCase_ = 3;
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Zypper Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
       */
      public Builder mergeZypper(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository value) {
        if (zypperBuilder_ == null) {
          if (repositoryCase_ == 3
              && repository_
                  != com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
                      .getDefaultInstance()) {
            repository_ =
                com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.newBuilder(
                        (com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository)
                            repository_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            repository_ = value;
          }
          onChanged();
        } else {
          if (repositoryCase_ == 3) {
            zypperBuilder_.mergeFrom(value);
          } else {
            zypperBuilder_.setMessage(value);
          }
        }
        repositoryCase_ = 3;
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Zypper Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
       */
      public Builder clearZypper() {
        if (zypperBuilder_ == null) {
          if (repositoryCase_ == 3) {
            repositoryCase_ = 0;
            repository_ = null;
            onChanged();
          }
        } else {
          if (repositoryCase_ == 3) {
            repositoryCase_ = 0;
            repository_ = null;
          }
          zypperBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Zypper Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.Builder
          getZypperBuilder() {
        return getZypperFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * A Zypper Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepositoryOrBuilder
          getZypperOrBuilder() {
        if ((repositoryCase_ == 3) && (zypperBuilder_ != null)) {
          return zypperBuilder_.getMessageOrBuilder();
        } else {
          if (repositoryCase_ == 3) {
            return (com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository) repository_;
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
              .getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * A Zypper Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.ZypperRepository zypper = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepositoryOrBuilder>
          getZypperFieldBuilder() {
        if (zypperBuilder_ == null) {
          if (!(repositoryCase_ == 3)) {
            repository_ =
                com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository
                    .getDefaultInstance();
          }
          zypperBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepositoryOrBuilder>(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.ZypperRepository) repository_,
                  getParentForChildren(),
                  isClean());
          repository_ = null;
        }
        repositoryCase_ = 3;
        onChanged();
        return zypperBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepositoryOrBuilder>
          gooBuilder_;
      /**
       *
       *
       * <pre>
       * A Goo Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
       *
       * @return Whether the goo field is set.
       */
      @java.lang.Override
      public boolean hasGoo() {
        return repositoryCase_ == 4;
      }
      /**
       *
       *
       * <pre>
       * A Goo Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
       *
       * @return The goo.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository getGoo() {
        if (gooBuilder_ == null) {
          if (repositoryCase_ == 4) {
            return (com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) repository_;
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.getDefaultInstance();
        } else {
          if (repositoryCase_ == 4) {
            return gooBuilder_.getMessage();
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * A Goo Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
       */
      public Builder setGoo(com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository value) {
        if (gooBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          repository_ = value;
          onChanged();
        } else {
          gooBuilder_.setMessage(value);
        }
        repositoryCase_ = 4;
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Goo Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
       */
      public Builder setGoo(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.Builder builderForValue) {
        if (gooBuilder_ == null) {
          repository_ = builderForValue.build();
          onChanged();
        } else {
          gooBuilder_.setMessage(builderForValue.build());
        }
        repositoryCase_ = 4;
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Goo Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
       */
      public Builder mergeGoo(com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository value) {
        if (gooBuilder_ == null) {
          if (repositoryCase_ == 4
              && repository_
                  != com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository
                      .getDefaultInstance()) {
            repository_ =
                com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.newBuilder(
                        (com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) repository_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            repository_ = value;
          }
          onChanged();
        } else {
          if (repositoryCase_ == 4) {
            gooBuilder_.mergeFrom(value);
          } else {
            gooBuilder_.setMessage(value);
          }
        }
        repositoryCase_ = 4;
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Goo Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
       */
      public Builder clearGoo() {
        if (gooBuilder_ == null) {
          if (repositoryCase_ == 4) {
            repositoryCase_ = 0;
            repository_ = null;
            onChanged();
          }
        } else {
          if (repositoryCase_ == 4) {
            repositoryCase_ = 0;
            repository_ = null;
          }
          gooBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * A Goo Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.Builder getGooBuilder() {
        return getGooFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * A Goo Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepositoryOrBuilder
          getGooOrBuilder() {
        if ((repositoryCase_ == 4) && (gooBuilder_ != null)) {
          return gooBuilder_.getMessageOrBuilder();
        } else {
          if (repositoryCase_ == 4) {
            return (com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) repository_;
          }
          return com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * A Goo Repository.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.GooRepository goo = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepositoryOrBuilder>
          getGooFieldBuilder() {
        if (gooBuilder_ == null) {
          if (!(repositoryCase_ == 4)) {
            repository_ =
                com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.getDefaultInstance();
          }
          gooBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepositoryOrBuilder>(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.GooRepository) repository_,
                  getParentForChildren(),
                  isClean());
          repository_ = null;
        }
        repositoryCase_ = 4;
        onChanged();
        return gooBuilder_;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.PackageRepository)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.PackageRepository)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface SoftwareRecipeOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. Unique identifier for the recipe. Only one recipe with a given name is
     * installed on an instance.
     * Names are also used to identify resources which helps to determine whether
     * guest policies have conflicts. This means that requests to create multiple
     * recipes with the same name and version are rejected since they
     * could potentially have conflicting assignments.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The name.
     */
    java.lang.String getName();
    /**
     *
     *
     * <pre>
     * Required. Unique identifier for the recipe. Only one recipe with a given name is
     * installed on an instance.
     * Names are also used to identify resources which helps to determine whether
     * guest policies have conflicts. This means that requests to create multiple
     * recipes with the same name and version are rejected since they
     * could potentially have conflicting assignments.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString getNameBytes();

    /**
     *
     *
     * <pre>
     * The version of this software recipe. Version can be up to 4 period
     * separated numbers (e.g. 12.34.56.78).
     * </pre>
     *
     * <code>string version = 2;</code>
     *
     * @return The version.
     */
    java.lang.String getVersion();
    /**
     *
     *
     * <pre>
     * The version of this software recipe. Version can be up to 4 period
     * separated numbers (e.g. 12.34.56.78).
     * </pre>
     *
     * <code>string version = 2;</code>
     *
     * @return The bytes for version.
     */
    com.google.protobuf.ByteString getVersionBytes();

    /**
     *
     *
     * <pre>
     * Resources available to be used in the steps in the recipe.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
     */
    java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact>
        getArtifactsList();
    /**
     *
     *
     * <pre>
     * Resources available to be used in the steps in the recipe.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact getArtifacts(int index);
    /**
     *
     *
     * <pre>
     * Resources available to be used in the steps in the recipe.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
     */
    int getArtifactsCount();
    /**
     *
     *
     * <pre>
     * Resources available to be used in the steps in the recipe.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
     */
    java.util.List<
            ? extends
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.ArtifactOrBuilder>
        getArtifactsOrBuilderList();
    /**
     *
     *
     * <pre>
     * Resources available to be used in the steps in the recipe.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.ArtifactOrBuilder
        getArtifactsOrBuilder(int index);

    /**
     *
     *
     * <pre>
     * Actions to be taken for installing this recipe. On failure it stops
     * executing steps and does not attempt another installation. Any steps taken
     * (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
     */
    java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
        getInstallStepsList();
    /**
     *
     *
     * <pre>
     * Actions to be taken for installing this recipe. On failure it stops
     * executing steps and does not attempt another installation. Any steps taken
     * (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step getInstallSteps(int index);
    /**
     *
     *
     * <pre>
     * Actions to be taken for installing this recipe. On failure it stops
     * executing steps and does not attempt another installation. Any steps taken
     * (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
     */
    int getInstallStepsCount();
    /**
     *
     *
     * <pre>
     * Actions to be taken for installing this recipe. On failure it stops
     * executing steps and does not attempt another installation. Any steps taken
     * (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
     */
    java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>
        getInstallStepsOrBuilderList();
    /**
     *
     *
     * <pre>
     * Actions to be taken for installing this recipe. On failure it stops
     * executing steps and does not attempt another installation. Any steps taken
     * (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder
        getInstallStepsOrBuilder(int index);

    /**
     *
     *
     * <pre>
     * Actions to be taken for updating this recipe. On failure it stops
     * executing steps and  does not attempt another update for this recipe. Any
     * steps taken (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
     */
    java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
        getUpdateStepsList();
    /**
     *
     *
     * <pre>
     * Actions to be taken for updating this recipe. On failure it stops
     * executing steps and  does not attempt another update for this recipe. Any
     * steps taken (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step getUpdateSteps(int index);
    /**
     *
     *
     * <pre>
     * Actions to be taken for updating this recipe. On failure it stops
     * executing steps and  does not attempt another update for this recipe. Any
     * steps taken (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
     */
    int getUpdateStepsCount();
    /**
     *
     *
     * <pre>
     * Actions to be taken for updating this recipe. On failure it stops
     * executing steps and  does not attempt another update for this recipe. Any
     * steps taken (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
     */
    java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>
        getUpdateStepsOrBuilderList();
    /**
     *
     *
     * <pre>
     * Actions to be taken for updating this recipe. On failure it stops
     * executing steps and  does not attempt another update for this recipe. Any
     * steps taken (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder
        getUpdateStepsOrBuilder(int index);

    /**
     *
     *
     * <pre>
     * Default is INSTALLED. The desired state the agent should maintain for this
     * recipe.
     * INSTALLED: The software recipe is installed on the instance but
     *            won't be updated to new versions.
     * UPDATED: The software recipe is installed on the instance. The recipe is
     *          updated to a higher version, if a higher version of the recipe is
     *          assigned to this instance.
     * REMOVE: Remove is unsupported for software recipes and attempts to
     *         create or update a recipe to the REMOVE state is rejected.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 6;</code>
     *
     * @return The enum numeric value on the wire for desiredState.
     */
    int getDesiredStateValue();
    /**
     *
     *
     * <pre>
     * Default is INSTALLED. The desired state the agent should maintain for this
     * recipe.
     * INSTALLED: The software recipe is installed on the instance but
     *            won't be updated to new versions.
     * UPDATED: The software recipe is installed on the instance. The recipe is
     *          updated to a higher version, if a higher version of the recipe is
     *          assigned to this instance.
     * REMOVE: Remove is unsupported for software recipes and attempts to
     *         create or update a recipe to the REMOVE state is rejected.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 6;</code>
     *
     * @return The desiredState.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState getDesiredState();
  }
  /**
   *
   *
   * <pre>
   * A software recipe is a set of instructions for installing and configuring a
   * piece of software. It consists of a set of artifacts that are
   * downloaded, and a set of steps that install, configure, and/or update the
   * software.
   * Recipes support installing and updating software from artifacts in the
   * following formats:
   * Zip archive, Tar archive, Windows MSI, Debian package, and RPM package.
   * Additionally, recipes support executing a script (either defined in a file or
   * directly in this api) in bash, sh, cmd, and powershell.
   * Updating a software recipe
   * If a recipe is assigned to an instance and there is a recipe with the same
   * name but a lower version already installed and the assigned state
   * of the recipe is `UPDATED`, then the recipe is updated to
   * the new version.
   * Script Working Directories
   * Each script or execution step is run in its own temporary directory which
   * is deleted after completing the step.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe}
   */
  public static final class SoftwareRecipe extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe)
      SoftwareRecipeOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use SoftwareRecipe.newBuilder() to construct.
    private SoftwareRecipe(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private SoftwareRecipe() {
      name_ = "";
      version_ = "";
      artifacts_ = java.util.Collections.emptyList();
      installSteps_ = java.util.Collections.emptyList();
      updateSteps_ = java.util.Collections.emptyList();
      desiredState_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new SoftwareRecipe();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder.class);
    }

    public interface ArtifactOrBuilder
        extends
        // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact)
        com.google.protobuf.MessageOrBuilder {

      /**
       *
       *
       * <pre>
       * Required. Id of the artifact, which the installation and update steps of this
       * recipe can reference. Artifacts in a recipe cannot have the same id.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The id.
       */
      java.lang.String getId();
      /**
       *
       *
       * <pre>
       * Required. Id of the artifact, which the installation and update steps of this
       * recipe can reference. Artifacts in a recipe cannot have the same id.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for id.
       */
      com.google.protobuf.ByteString getIdBytes();

      /**
       *
       *
       * <pre>
       * A generic remote artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
       *
       * @return Whether the remote field is set.
       */
      boolean hasRemote();
      /**
       *
       *
       * <pre>
       * A generic remote artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
       *
       * @return The remote.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote getRemote();
      /**
       *
       *
       * <pre>
       * A generic remote artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.RemoteOrBuilder
          getRemoteOrBuilder();

      /**
       *
       *
       * <pre>
       * A Google Cloud Storage artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
       *
       * @return Whether the gcs field is set.
       */
      boolean hasGcs();
      /**
       *
       *
       * <pre>
       * A Google Cloud Storage artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
       *
       * @return The gcs.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs getGcs();
      /**
       *
       *
       * <pre>
       * A Google Cloud Storage artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.GcsOrBuilder
          getGcsOrBuilder();

      /**
       *
       *
       * <pre>
       * Defaults to false. When false, recipes are subject to validations
       * based on the artifact type:
       * Remote: A checksum must be specified, and only protocols with
       * transport-layer security are permitted.
       * GCS:    An object generation number must be specified.
       * </pre>
       *
       * <code>bool allow_insecure = 4;</code>
       *
       * @return The allowInsecure.
       */
      boolean getAllowInsecure();

      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.ArtifactCase
          getArtifactCase();
    }
    /**
     *
     *
     * <pre>
     * Specifies a resource to be used in the recipe.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact}
     */
    public static final class Artifact extends com.google.protobuf.GeneratedMessageV3
        implements
        // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact)
        ArtifactOrBuilder {
      private static final long serialVersionUID = 0L;
      // Use Artifact.newBuilder() to construct.
      private Artifact(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }

      private Artifact() {
        id_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
        return new Artifact();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
        return this.unknownFields;
      }

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder
                    .class);
      }

      public interface RemoteOrBuilder
          extends
          // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote)
          com.google.protobuf.MessageOrBuilder {

        /**
         *
         *
         * <pre>
         * URI from which to fetch the object. It should contain both the protocol
         * and path following the format {protocol}://{location}.
         * </pre>
         *
         * <code>string uri = 1;</code>
         *
         * @return The uri.
         */
        java.lang.String getUri();
        /**
         *
         *
         * <pre>
         * URI from which to fetch the object. It should contain both the protocol
         * and path following the format {protocol}://{location}.
         * </pre>
         *
         * <code>string uri = 1;</code>
         *
         * @return The bytes for uri.
         */
        com.google.protobuf.ByteString getUriBytes();

        /**
         *
         *
         * <pre>
         * Must be provided if `allow_insecure` is `false`.
         * SHA256 checksum in hex format, to compare to the checksum of the
         * artifact. If the checksum is not empty and it doesn't match the
         * artifact then the recipe installation fails before running any of the
         * steps.
         * </pre>
         *
         * <code>string checksum = 2;</code>
         *
         * @return The checksum.
         */
        java.lang.String getChecksum();
        /**
         *
         *
         * <pre>
         * Must be provided if `allow_insecure` is `false`.
         * SHA256 checksum in hex format, to compare to the checksum of the
         * artifact. If the checksum is not empty and it doesn't match the
         * artifact then the recipe installation fails before running any of the
         * steps.
         * </pre>
         *
         * <code>string checksum = 2;</code>
         *
         * @return The bytes for checksum.
         */
        com.google.protobuf.ByteString getChecksumBytes();
      }
      /**
       *
       *
       * <pre>
       * Specifies an artifact available via some URI.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote}
       */
      public static final class Remote extends com.google.protobuf.GeneratedMessageV3
          implements
          // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote)
          RemoteOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use Remote.newBuilder() to construct.
        private Remote(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }

        private Remote() {
          uri_ = "";
          checksum_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
          return new Remote();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
          return this.unknownFields;
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Remote_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Remote_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                      .class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                      .Builder.class);
        }

        public static final int URI_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object uri_ = "";
        /**
         *
         *
         * <pre>
         * URI from which to fetch the object. It should contain both the protocol
         * and path following the format {protocol}://{location}.
         * </pre>
         *
         * <code>string uri = 1;</code>
         *
         * @return The uri.
         */
        @java.lang.Override
        public java.lang.String getUri() {
          java.lang.Object ref = uri_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            uri_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * URI from which to fetch the object. It should contain both the protocol
         * and path following the format {protocol}://{location}.
         * </pre>
         *
         * <code>string uri = 1;</code>
         *
         * @return The bytes for uri.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getUriBytes() {
          java.lang.Object ref = uri_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            uri_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int CHECKSUM_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object checksum_ = "";
        /**
         *
         *
         * <pre>
         * Must be provided if `allow_insecure` is `false`.
         * SHA256 checksum in hex format, to compare to the checksum of the
         * artifact. If the checksum is not empty and it doesn't match the
         * artifact then the recipe installation fails before running any of the
         * steps.
         * </pre>
         *
         * <code>string checksum = 2;</code>
         *
         * @return The checksum.
         */
        @java.lang.Override
        public java.lang.String getChecksum() {
          java.lang.Object ref = checksum_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            checksum_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Must be provided if `allow_insecure` is `false`.
         * SHA256 checksum in hex format, to compare to the checksum of the
         * artifact. If the checksum is not empty and it doesn't match the
         * artifact then the recipe installation fails before running any of the
         * steps.
         * </pre>
         *
         * <code>string checksum = 2;</code>
         *
         * @return The bytes for checksum.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getChecksumBytes() {
          java.lang.Object ref = checksum_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            checksum_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        private byte memoizedIsInitialized = -1;

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

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uri_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uri_);
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(checksum_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 2, checksum_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uri_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uri_);
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(checksum_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, checksum_);
          }
          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
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote)) {
            return super.equals(obj);
          }
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote other =
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote) obj;

          if (!getUri().equals(other.getUri())) return false;
          if (!getChecksum().equals(other.getChecksum())) 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();
          hash = (37 * hash) + URI_FIELD_NUMBER;
          hash = (53 * hash) + getUri().hashCode();
          hash = (37 * hash) + CHECKSUM_FIELD_NUMBER;
          hash = (53 * hash) + getChecksum().hashCode();
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseFrom(java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseFrom(com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
          return newBuilder();
        }

        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                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.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         *
         *
         * <pre>
         * Specifies an artifact available via some URI.
         * </pre>
         *
         * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote}
         */
        public static final class Builder
            extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
            implements
            // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote)
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.RemoteOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Remote_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Remote_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                        .class,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                        .Builder.class);
          }

          // Construct using
          // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote.newBuilder()
          private Builder() {}

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

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

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Remote_descriptor;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
              getDefaultInstanceForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                .getDefaultInstance();
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
              build() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote result =
                buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
              buildPartial() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote result =
                new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote(
                    this);
            if (bitField0_ != 0) {
              buildPartial0(result);
            }
            onBuilt();
            return result;
          }

          private void buildPartial0(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                  result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.uri_ = uri_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.checksum_ = checksum_;
            }
          }

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

          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.setField(field, value);
          }

          @java.lang.Override
          public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }

          @java.lang.Override
          public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }

          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index,
              java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }

          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other
                instanceof
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote) {
              return mergeFrom(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote)
                      other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote other) {
            if (other
                == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                    .getDefaultInstance()) return this;
            if (!other.getUri().isEmpty()) {
              uri_ = other.uri_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            if (!other.getChecksum().isEmpty()) {
              checksum_ = other.checksum_;
              bitField0_ |= 0x00000002;
              onChanged();
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

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

          private int bitField0_;

          private java.lang.Object uri_ = "";
          /**
           *
           *
           * <pre>
           * URI from which to fetch the object. It should contain both the protocol
           * and path following the format {protocol}://{location}.
           * </pre>
           *
           * <code>string uri = 1;</code>
           *
           * @return The uri.
           */
          public java.lang.String getUri() {
            java.lang.Object ref = uri_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              uri_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * URI from which to fetch the object. It should contain both the protocol
           * and path following the format {protocol}://{location}.
           * </pre>
           *
           * <code>string uri = 1;</code>
           *
           * @return The bytes for uri.
           */
          public com.google.protobuf.ByteString getUriBytes() {
            java.lang.Object ref = uri_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              uri_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * URI from which to fetch the object. It should contain both the protocol
           * and path following the format {protocol}://{location}.
           * </pre>
           *
           * <code>string uri = 1;</code>
           *
           * @param value The uri to set.
           * @return This builder for chaining.
           */
          public Builder setUri(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            uri_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * URI from which to fetch the object. It should contain both the protocol
           * and path following the format {protocol}://{location}.
           * </pre>
           *
           * <code>string uri = 1;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearUri() {
            uri_ = getDefaultInstance().getUri();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * URI from which to fetch the object. It should contain both the protocol
           * and path following the format {protocol}://{location}.
           * </pre>
           *
           * <code>string uri = 1;</code>
           *
           * @param value The bytes for uri to set.
           * @return This builder for chaining.
           */
          public Builder setUriBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            uri_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }

          private java.lang.Object checksum_ = "";
          /**
           *
           *
           * <pre>
           * Must be provided if `allow_insecure` is `false`.
           * SHA256 checksum in hex format, to compare to the checksum of the
           * artifact. If the checksum is not empty and it doesn't match the
           * artifact then the recipe installation fails before running any of the
           * steps.
           * </pre>
           *
           * <code>string checksum = 2;</code>
           *
           * @return The checksum.
           */
          public java.lang.String getChecksum() {
            java.lang.Object ref = checksum_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              checksum_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Must be provided if `allow_insecure` is `false`.
           * SHA256 checksum in hex format, to compare to the checksum of the
           * artifact. If the checksum is not empty and it doesn't match the
           * artifact then the recipe installation fails before running any of the
           * steps.
           * </pre>
           *
           * <code>string checksum = 2;</code>
           *
           * @return The bytes for checksum.
           */
          public com.google.protobuf.ByteString getChecksumBytes() {
            java.lang.Object ref = checksum_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              checksum_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Must be provided if `allow_insecure` is `false`.
           * SHA256 checksum in hex format, to compare to the checksum of the
           * artifact. If the checksum is not empty and it doesn't match the
           * artifact then the recipe installation fails before running any of the
           * steps.
           * </pre>
           *
           * <code>string checksum = 2;</code>
           *
           * @param value The checksum to set.
           * @return This builder for chaining.
           */
          public Builder setChecksum(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checksum_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Must be provided if `allow_insecure` is `false`.
           * SHA256 checksum in hex format, to compare to the checksum of the
           * artifact. If the checksum is not empty and it doesn't match the
           * artifact then the recipe installation fails before running any of the
           * steps.
           * </pre>
           *
           * <code>string checksum = 2;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearChecksum() {
            checksum_ = getDefaultInstance().getChecksum();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Must be provided if `allow_insecure` is `false`.
           * SHA256 checksum in hex format, to compare to the checksum of the
           * artifact. If the checksum is not empty and it doesn't match the
           * artifact then the recipe installation fails before running any of the
           * steps.
           * </pre>
           *
           * <code>string checksum = 2;</code>
           *
           * @param value The bytes for checksum to set.
           * @return This builder for chaining.
           */
          public Builder setChecksumBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            checksum_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }

          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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

          // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote)
        }

        // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote)
        private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                .Remote
            DEFAULT_INSTANCE;

        static {
          DEFAULT_INSTANCE =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote();
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
      }

      public interface GcsOrBuilder
          extends
          // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs)
          com.google.protobuf.MessageOrBuilder {

        /**
         *
         *
         * <pre>
         * Bucket of the Google Cloud Storage object.
         * Given an example URL:
         * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
         * this value would be `my-bucket`.
         * </pre>
         *
         * <code>string bucket = 1;</code>
         *
         * @return The bucket.
         */
        java.lang.String getBucket();
        /**
         *
         *
         * <pre>
         * Bucket of the Google Cloud Storage object.
         * Given an example URL:
         * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
         * this value would be `my-bucket`.
         * </pre>
         *
         * <code>string bucket = 1;</code>
         *
         * @return The bytes for bucket.
         */
        com.google.protobuf.ByteString getBucketBytes();

        /**
         *
         *
         * <pre>
         * Name of the Google Cloud Storage object.
         * As specified [here]
         * (https://cloud.google.com/storage/docs/naming#objectnames)
         * Given an example URL:
         * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
         * this value would be `foo/bar`.
         * </pre>
         *
         * <code>string object = 2;</code>
         *
         * @return The object.
         */
        java.lang.String getObject();
        /**
         *
         *
         * <pre>
         * Name of the Google Cloud Storage object.
         * As specified [here]
         * (https://cloud.google.com/storage/docs/naming#objectnames)
         * Given an example URL:
         * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
         * this value would be `foo/bar`.
         * </pre>
         *
         * <code>string object = 2;</code>
         *
         * @return The bytes for object.
         */
        com.google.protobuf.ByteString getObjectBytes();

        /**
         *
         *
         * <pre>
         * Must be provided if allow_insecure is false.
         * Generation number of the Google Cloud Storage object.
         * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
         * this value would be `1234567`.
         * </pre>
         *
         * <code>int64 generation = 3;</code>
         *
         * @return The generation.
         */
        long getGeneration();
      }
      /**
       *
       *
       * <pre>
       * Specifies an artifact available as a Google Cloud Storage object.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs}
       */
      public static final class Gcs extends com.google.protobuf.GeneratedMessageV3
          implements
          // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs)
          GcsOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use Gcs.newBuilder() to construct.
        private Gcs(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }

        private Gcs() {
          bucket_ = "";
          object_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
          return new Gcs();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
          return this.unknownFields;
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Gcs_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Gcs_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs.class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs.Builder
                      .class);
        }

        public static final int BUCKET_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object bucket_ = "";
        /**
         *
         *
         * <pre>
         * Bucket of the Google Cloud Storage object.
         * Given an example URL:
         * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
         * this value would be `my-bucket`.
         * </pre>
         *
         * <code>string bucket = 1;</code>
         *
         * @return The bucket.
         */
        @java.lang.Override
        public java.lang.String getBucket() {
          java.lang.Object ref = bucket_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            bucket_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Bucket of the Google Cloud Storage object.
         * Given an example URL:
         * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
         * this value would be `my-bucket`.
         * </pre>
         *
         * <code>string bucket = 1;</code>
         *
         * @return The bytes for bucket.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getBucketBytes() {
          java.lang.Object ref = bucket_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            bucket_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int OBJECT_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object object_ = "";
        /**
         *
         *
         * <pre>
         * Name of the Google Cloud Storage object.
         * As specified [here]
         * (https://cloud.google.com/storage/docs/naming#objectnames)
         * Given an example URL:
         * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
         * this value would be `foo/bar`.
         * </pre>
         *
         * <code>string object = 2;</code>
         *
         * @return The object.
         */
        @java.lang.Override
        public java.lang.String getObject() {
          java.lang.Object ref = object_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            object_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Name of the Google Cloud Storage object.
         * As specified [here]
         * (https://cloud.google.com/storage/docs/naming#objectnames)
         * Given an example URL:
         * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
         * this value would be `foo/bar`.
         * </pre>
         *
         * <code>string object = 2;</code>
         *
         * @return The bytes for object.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getObjectBytes() {
          java.lang.Object ref = object_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            object_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int GENERATION_FIELD_NUMBER = 3;
        private long generation_ = 0L;
        /**
         *
         *
         * <pre>
         * Must be provided if allow_insecure is false.
         * Generation number of the Google Cloud Storage object.
         * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
         * this value would be `1234567`.
         * </pre>
         *
         * <code>int64 generation = 3;</code>
         *
         * @return The generation.
         */
        @java.lang.Override
        public long getGeneration() {
          return generation_;
        }

        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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bucket_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, bucket_);
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(object_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 2, object_);
          }
          if (generation_ != 0L) {
            output.writeInt64(3, generation_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bucket_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, bucket_);
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(object_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, object_);
          }
          if (generation_ != 0L) {
            size += com.google.protobuf.CodedOutputStream.computeInt64Size(3, generation_);
          }
          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
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs)) {
            return super.equals(obj);
          }
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs other =
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs) obj;

          if (!getBucket().equals(other.getBucket())) return false;
          if (!getObject().equals(other.getObject())) return false;
          if (getGeneration() != other.getGeneration()) 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();
          hash = (37 * hash) + BUCKET_FIELD_NUMBER;
          hash = (53 * hash) + getBucket().hashCode();
          hash = (37 * hash) + OBJECT_FIELD_NUMBER;
          hash = (53 * hash) + getObject().hashCode();
          hash = (37 * hash) + GENERATION_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getGeneration());
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseFrom(java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseFrom(com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
          return newBuilder();
        }

        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs 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.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         *
         *
         * <pre>
         * Specifies an artifact available as a Google Cloud Storage object.
         * </pre>
         *
         * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs}
         */
        public static final class Builder
            extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
            implements
            // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs)
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.GcsOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Gcs_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Gcs_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                        .class,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                        .Builder.class);
          }

          // Construct using
          // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs.newBuilder()
          private Builder() {}

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

          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            bucket_ = "";
            object_ = "";
            generation_ = 0L;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Gcs_descriptor;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
              getDefaultInstanceForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                .getDefaultInstance();
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
              build() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs result =
                buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
              buildPartial() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs result =
                new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs(
                    this);
            if (bitField0_ != 0) {
              buildPartial0(result);
            }
            onBuilt();
            return result;
          }

          private void buildPartial0(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.bucket_ = bucket_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.object_ = object_;
            }
            if (((from_bitField0_ & 0x00000004) != 0)) {
              result.generation_ = generation_;
            }
          }

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

          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.setField(field, value);
          }

          @java.lang.Override
          public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }

          @java.lang.Override
          public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }

          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index,
              java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }

          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other
                instanceof
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs) {
              return mergeFrom(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs)
                      other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs other) {
            if (other
                == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                    .getDefaultInstance()) return this;
            if (!other.getBucket().isEmpty()) {
              bucket_ = other.bucket_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            if (!other.getObject().isEmpty()) {
              object_ = other.object_;
              bitField0_ |= 0x00000002;
              onChanged();
            }
            if (other.getGeneration() != 0L) {
              setGeneration(other.getGeneration());
            }
            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:
                    {
                      bucket_ = input.readStringRequireUtf8();
                      bitField0_ |= 0x00000001;
                      break;
                    } // case 10
                  case 18:
                    {
                      object_ = input.readStringRequireUtf8();
                      bitField0_ |= 0x00000002;
                      break;
                    } // case 18
                  case 24:
                    {
                      generation_ = input.readInt64();
                      bitField0_ |= 0x00000004;
                      break;
                    } // case 24
                  default:
                    {
                      if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                        done = true; // was an endgroup tag
                      }
                      break;
                    } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }

          private int bitField0_;

          private java.lang.Object bucket_ = "";
          /**
           *
           *
           * <pre>
           * Bucket of the Google Cloud Storage object.
           * Given an example URL:
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `my-bucket`.
           * </pre>
           *
           * <code>string bucket = 1;</code>
           *
           * @return The bucket.
           */
          public java.lang.String getBucket() {
            java.lang.Object ref = bucket_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              bucket_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Bucket of the Google Cloud Storage object.
           * Given an example URL:
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `my-bucket`.
           * </pre>
           *
           * <code>string bucket = 1;</code>
           *
           * @return The bytes for bucket.
           */
          public com.google.protobuf.ByteString getBucketBytes() {
            java.lang.Object ref = bucket_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              bucket_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Bucket of the Google Cloud Storage object.
           * Given an example URL:
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `my-bucket`.
           * </pre>
           *
           * <code>string bucket = 1;</code>
           *
           * @param value The bucket to set.
           * @return This builder for chaining.
           */
          public Builder setBucket(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            bucket_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Bucket of the Google Cloud Storage object.
           * Given an example URL:
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `my-bucket`.
           * </pre>
           *
           * <code>string bucket = 1;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearBucket() {
            bucket_ = getDefaultInstance().getBucket();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Bucket of the Google Cloud Storage object.
           * Given an example URL:
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `my-bucket`.
           * </pre>
           *
           * <code>string bucket = 1;</code>
           *
           * @param value The bytes for bucket to set.
           * @return This builder for chaining.
           */
          public Builder setBucketBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            bucket_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }

          private java.lang.Object object_ = "";
          /**
           *
           *
           * <pre>
           * Name of the Google Cloud Storage object.
           * As specified [here]
           * (https://cloud.google.com/storage/docs/naming#objectnames)
           * Given an example URL:
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `foo/bar`.
           * </pre>
           *
           * <code>string object = 2;</code>
           *
           * @return The object.
           */
          public java.lang.String getObject() {
            java.lang.Object ref = object_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              object_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Name of the Google Cloud Storage object.
           * As specified [here]
           * (https://cloud.google.com/storage/docs/naming#objectnames)
           * Given an example URL:
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `foo/bar`.
           * </pre>
           *
           * <code>string object = 2;</code>
           *
           * @return The bytes for object.
           */
          public com.google.protobuf.ByteString getObjectBytes() {
            java.lang.Object ref = object_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              object_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Name of the Google Cloud Storage object.
           * As specified [here]
           * (https://cloud.google.com/storage/docs/naming#objectnames)
           * Given an example URL:
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `foo/bar`.
           * </pre>
           *
           * <code>string object = 2;</code>
           *
           * @param value The object to set.
           * @return This builder for chaining.
           */
          public Builder setObject(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            object_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Name of the Google Cloud Storage object.
           * As specified [here]
           * (https://cloud.google.com/storage/docs/naming#objectnames)
           * Given an example URL:
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `foo/bar`.
           * </pre>
           *
           * <code>string object = 2;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearObject() {
            object_ = getDefaultInstance().getObject();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Name of the Google Cloud Storage object.
           * As specified [here]
           * (https://cloud.google.com/storage/docs/naming#objectnames)
           * Given an example URL:
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `foo/bar`.
           * </pre>
           *
           * <code>string object = 2;</code>
           *
           * @param value The bytes for object to set.
           * @return This builder for chaining.
           */
          public Builder setObjectBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            object_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }

          private long generation_;
          /**
           *
           *
           * <pre>
           * Must be provided if allow_insecure is false.
           * Generation number of the Google Cloud Storage object.
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `1234567`.
           * </pre>
           *
           * <code>int64 generation = 3;</code>
           *
           * @return The generation.
           */
          @java.lang.Override
          public long getGeneration() {
            return generation_;
          }
          /**
           *
           *
           * <pre>
           * Must be provided if allow_insecure is false.
           * Generation number of the Google Cloud Storage object.
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `1234567`.
           * </pre>
           *
           * <code>int64 generation = 3;</code>
           *
           * @param value The generation to set.
           * @return This builder for chaining.
           */
          public Builder setGeneration(long value) {

            generation_ = value;
            bitField0_ |= 0x00000004;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Must be provided if allow_insecure is false.
           * Generation number of the Google Cloud Storage object.
           * `https://storage.googleapis.com/my-bucket/foo/bar#1234567`
           * this value would be `1234567`.
           * </pre>
           *
           * <code>int64 generation = 3;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearGeneration() {
            bitField0_ = (bitField0_ & ~0x00000004);
            generation_ = 0L;
            onChanged();
            return this;
          }

          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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

          // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs)
        }

        // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs)
        private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                .Gcs
            DEFAULT_INSTANCE;

        static {
          DEFAULT_INSTANCE =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs();
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
      }

      private int artifactCase_ = 0;
      private java.lang.Object artifact_;

      public enum ArtifactCase
          implements
              com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        REMOTE(2),
        GCS(3),
        ARTIFACT_NOT_SET(0);
        private final int value;

        private ArtifactCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ArtifactCase valueOf(int value) {
          return forNumber(value);
        }

        public static ArtifactCase forNumber(int value) {
          switch (value) {
            case 2:
              return REMOTE;
            case 3:
              return GCS;
            case 0:
              return ARTIFACT_NOT_SET;
            default:
              return null;
          }
        }

        public int getNumber() {
          return this.value;
        }
      };

      public ArtifactCase getArtifactCase() {
        return ArtifactCase.forNumber(artifactCase_);
      }

      public static final int ID_FIELD_NUMBER = 1;

      @SuppressWarnings("serial")
      private volatile java.lang.Object id_ = "";
      /**
       *
       *
       * <pre>
       * Required. Id of the artifact, which the installation and update steps of this
       * recipe can reference. Artifacts in a recipe cannot have the same id.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The id.
       */
      @java.lang.Override
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Id of the artifact, which the installation and update steps of this
       * recipe can reference. Artifacts in a recipe cannot have the same id.
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for id.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int REMOTE_FIELD_NUMBER = 2;
      /**
       *
       *
       * <pre>
       * A generic remote artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
       *
       * @return Whether the remote field is set.
       */
      @java.lang.Override
      public boolean hasRemote() {
        return artifactCase_ == 2;
      }
      /**
       *
       *
       * <pre>
       * A generic remote artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
       *
       * @return The remote.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
          getRemote() {
        if (artifactCase_ == 2) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote)
              artifact_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            .getDefaultInstance();
      }
      /**
       *
       *
       * <pre>
       * A generic remote artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.RemoteOrBuilder
          getRemoteOrBuilder() {
        if (artifactCase_ == 2) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote)
              artifact_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            .getDefaultInstance();
      }

      public static final int GCS_FIELD_NUMBER = 3;
      /**
       *
       *
       * <pre>
       * A Google Cloud Storage artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
       *
       * @return Whether the gcs field is set.
       */
      @java.lang.Override
      public boolean hasGcs() {
        return artifactCase_ == 3;
      }
      /**
       *
       *
       * <pre>
       * A Google Cloud Storage artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
       *
       * @return The gcs.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs getGcs() {
        if (artifactCase_ == 3) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs)
              artifact_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            .getDefaultInstance();
      }
      /**
       *
       *
       * <pre>
       * A Google Cloud Storage artifact.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.GcsOrBuilder
          getGcsOrBuilder() {
        if (artifactCase_ == 3) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs)
              artifact_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
            .getDefaultInstance();
      }

      public static final int ALLOW_INSECURE_FIELD_NUMBER = 4;
      private boolean allowInsecure_ = false;
      /**
       *
       *
       * <pre>
       * Defaults to false. When false, recipes are subject to validations
       * based on the artifact type:
       * Remote: A checksum must be specified, and only protocols with
       * transport-layer security are permitted.
       * GCS:    An object generation number must be specified.
       * </pre>
       *
       * <code>bool allow_insecure = 4;</code>
       *
       * @return The allowInsecure.
       */
      @java.lang.Override
      public boolean getAllowInsecure() {
        return allowInsecure_;
      }

      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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
        }
        if (artifactCase_ == 2) {
          output.writeMessage(
              2,
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote)
                  artifact_);
        }
        if (artifactCase_ == 3) {
          output.writeMessage(
              3,
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs)
                  artifact_);
        }
        if (allowInsecure_ != false) {
          output.writeBool(4, allowInsecure_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
        }
        if (artifactCase_ == 2) {
          size +=
              com.google.protobuf.CodedOutputStream.computeMessageSize(
                  2,
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote)
                      artifact_);
        }
        if (artifactCase_ == 3) {
          size +=
              com.google.protobuf.CodedOutputStream.computeMessageSize(
                  3,
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs)
                      artifact_);
        }
        if (allowInsecure_ != false) {
          size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, allowInsecure_);
        }
        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 com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact)) {
          return super.equals(obj);
        }
        com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact other =
            (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact) obj;

        if (!getId().equals(other.getId())) return false;
        if (getAllowInsecure() != other.getAllowInsecure()) return false;
        if (!getArtifactCase().equals(other.getArtifactCase())) return false;
        switch (artifactCase_) {
          case 2:
            if (!getRemote().equals(other.getRemote())) return false;
            break;
          case 3:
            if (!getGcs().equals(other.getGcs())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + ID_FIELD_NUMBER;
        hash = (53 * hash) + getId().hashCode();
        hash = (37 * hash) + ALLOW_INSECURE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAllowInsecure());
        switch (artifactCase_) {
          case 2:
            hash = (37 * hash) + REMOTE_FIELD_NUMBER;
            hash = (53 * hash) + getRemote().hashCode();
            break;
          case 3:
            hash = (37 * hash) + GCS_FIELD_NUMBER;
            hash = (53 * hash) + getGcs().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseFrom(java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseFrom(
              java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseFrom(com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() {
        return newBuilder();
      }

      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }

      public static Builder newBuilder(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact 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.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       *
       *
       * <pre>
       * Specifies a resource to be used in the recipe.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact}
       */
      public static final class Builder
          extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
          implements
          // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact)
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.ArtifactOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder
                      .class);
        }

        // Construct using
        // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.newBuilder()
        private Builder() {}

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

        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          id_ = "";
          if (remoteBuilder_ != null) {
            remoteBuilder_.clear();
          }
          if (gcsBuilder_ != null) {
            gcsBuilder_.clear();
          }
          allowInsecure_ = false;
          artifactCase_ = 0;
          artifact_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_descriptor;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
            getDefaultInstanceForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
              .getDefaultInstance();
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact build() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact result =
              buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
            buildPartial() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact result =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact(this);
          if (bitField0_ != 0) {
            buildPartial0(result);
          }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.id_ = id_;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.allowInsecure_ = allowInsecure_;
          }
        }

        private void buildPartialOneofs(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact result) {
          result.artifactCase_ = artifactCase_;
          result.artifact_ = this.artifact_;
          if (artifactCase_ == 2 && remoteBuilder_ != null) {
            result.artifact_ = remoteBuilder_.build();
          }
          if (artifactCase_ == 3 && gcsBuilder_ != null) {
            result.artifact_ = gcsBuilder_.build();
          }
        }

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

        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.setField(field, value);
        }

        @java.lang.Override
        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }

        @java.lang.Override
        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }

        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index,
            java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }

        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other
              instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact) {
            return mergeFrom(
                (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact) other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact other) {
          if (other
              == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                  .getDefaultInstance()) return this;
          if (!other.getId().isEmpty()) {
            id_ = other.id_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.getAllowInsecure() != false) {
            setAllowInsecure(other.getAllowInsecure());
          }
          switch (other.getArtifactCase()) {
            case REMOTE:
              {
                mergeRemote(other.getRemote());
                break;
              }
            case GCS:
              {
                mergeGcs(other.getGcs());
                break;
              }
            case ARTIFACT_NOT_SET:
              {
                break;
              }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

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

        private int artifactCase_ = 0;
        private java.lang.Object artifact_;

        public ArtifactCase getArtifactCase() {
          return ArtifactCase.forNumber(artifactCase_);
        }

        public Builder clearArtifact() {
          artifactCase_ = 0;
          artifact_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private java.lang.Object id_ = "";
        /**
         *
         *
         * <pre>
         * Required. Id of the artifact, which the installation and update steps of this
         * recipe can reference. Artifacts in a recipe cannot have the same id.
         * </pre>
         *
         * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The id.
         */
        public java.lang.String getId() {
          java.lang.Object ref = id_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            id_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Required. Id of the artifact, which the installation and update steps of this
         * recipe can reference. Artifacts in a recipe cannot have the same id.
         * </pre>
         *
         * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for id.
         */
        public com.google.protobuf.ByteString getIdBytes() {
          java.lang.Object ref = id_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            id_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Required. Id of the artifact, which the installation and update steps of this
         * recipe can reference. Artifacts in a recipe cannot have the same id.
         * </pre>
         *
         * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @param value The id to set.
         * @return This builder for chaining.
         */
        public Builder setId(java.lang.String value) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Required. Id of the artifact, which the installation and update steps of this
         * recipe can reference. Artifacts in a recipe cannot have the same id.
         * </pre>
         *
         * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return This builder for chaining.
         */
        public Builder clearId() {
          id_ = getDefaultInstance().getId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Required. Id of the artifact, which the installation and update steps of this
         * recipe can reference. Artifacts in a recipe cannot have the same id.
         * </pre>
         *
         * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @param value The bytes for id to set.
         * @return This builder for chaining.
         */
        public Builder setIdBytes(com.google.protobuf.ByteString value) {
          if (value == null) {
            throw new NullPointerException();
          }
          checkByteStringIsUtf8(value);
          id_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                    .RemoteOrBuilder>
            remoteBuilder_;
        /**
         *
         *
         * <pre>
         * A generic remote artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
         *
         * @return Whether the remote field is set.
         */
        @java.lang.Override
        public boolean hasRemote() {
          return artifactCase_ == 2;
        }
        /**
         *
         *
         * <pre>
         * A generic remote artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
         *
         * @return The remote.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
            getRemote() {
          if (remoteBuilder_ == null) {
            if (artifactCase_ == 2) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote)
                  artifact_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                .getDefaultInstance();
          } else {
            if (artifactCase_ == 2) {
              return remoteBuilder_.getMessage();
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * A generic remote artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
         */
        public Builder setRemote(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote value) {
          if (remoteBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            artifact_ = value;
            onChanged();
          } else {
            remoteBuilder_.setMessage(value);
          }
          artifactCase_ = 2;
          return this;
        }
        /**
         *
         *
         * <pre>
         * A generic remote artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
         */
        public Builder setRemote(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote.Builder
                builderForValue) {
          if (remoteBuilder_ == null) {
            artifact_ = builderForValue.build();
            onChanged();
          } else {
            remoteBuilder_.setMessage(builderForValue.build());
          }
          artifactCase_ = 2;
          return this;
        }
        /**
         *
         *
         * <pre>
         * A generic remote artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
         */
        public Builder mergeRemote(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote value) {
          if (remoteBuilder_ == null) {
            if (artifactCase_ == 2
                && artifact_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                        .getDefaultInstance()) {
              artifact_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                      .newBuilder(
                          (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                                  .Remote)
                              artifact_)
                      .mergeFrom(value)
                      .buildPartial();
            } else {
              artifact_ = value;
            }
            onChanged();
          } else {
            if (artifactCase_ == 2) {
              remoteBuilder_.mergeFrom(value);
            } else {
              remoteBuilder_.setMessage(value);
            }
          }
          artifactCase_ = 2;
          return this;
        }
        /**
         *
         *
         * <pre>
         * A generic remote artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
         */
        public Builder clearRemote() {
          if (remoteBuilder_ == null) {
            if (artifactCase_ == 2) {
              artifactCase_ = 0;
              artifact_ = null;
              onChanged();
            }
          } else {
            if (artifactCase_ == 2) {
              artifactCase_ = 0;
              artifact_ = null;
            }
            remoteBuilder_.clear();
          }
          return this;
        }
        /**
         *
         *
         * <pre>
         * A generic remote artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote.Builder
            getRemoteBuilder() {
          return getRemoteFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * A generic remote artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                .RemoteOrBuilder
            getRemoteOrBuilder() {
          if ((artifactCase_ == 2) && (remoteBuilder_ != null)) {
            return remoteBuilder_.getMessageOrBuilder();
          } else {
            if (artifactCase_ == 2) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote)
                  artifact_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * A generic remote artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Remote remote = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                    .RemoteOrBuilder>
            getRemoteFieldBuilder() {
          if (remoteBuilder_ == null) {
            if (!(artifactCase_ == 2)) {
              artifact_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                      .getDefaultInstance();
            }
            remoteBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote
                        .Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                        .RemoteOrBuilder>(
                    (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Remote)
                        artifact_,
                    getParentForChildren(),
                    isClean());
            artifact_ = null;
          }
          artifactCase_ = 2;
          onChanged();
          return remoteBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.GcsOrBuilder>
            gcsBuilder_;
        /**
         *
         *
         * <pre>
         * A Google Cloud Storage artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
         *
         * @return Whether the gcs field is set.
         */
        @java.lang.Override
        public boolean hasGcs() {
          return artifactCase_ == 3;
        }
        /**
         *
         *
         * <pre>
         * A Google Cloud Storage artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
         *
         * @return The gcs.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs getGcs() {
          if (gcsBuilder_ == null) {
            if (artifactCase_ == 3) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs)
                  artifact_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                .getDefaultInstance();
          } else {
            if (artifactCase_ == 3) {
              return gcsBuilder_.getMessage();
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * A Google Cloud Storage artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
         */
        public Builder setGcs(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs value) {
          if (gcsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            artifact_ = value;
            onChanged();
          } else {
            gcsBuilder_.setMessage(value);
          }
          artifactCase_ = 3;
          return this;
        }
        /**
         *
         *
         * <pre>
         * A Google Cloud Storage artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
         */
        public Builder setGcs(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs.Builder
                builderForValue) {
          if (gcsBuilder_ == null) {
            artifact_ = builderForValue.build();
            onChanged();
          } else {
            gcsBuilder_.setMessage(builderForValue.build());
          }
          artifactCase_ = 3;
          return this;
        }
        /**
         *
         *
         * <pre>
         * A Google Cloud Storage artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
         */
        public Builder mergeGcs(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs value) {
          if (gcsBuilder_ == null) {
            if (artifactCase_ == 3
                && artifact_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                        .getDefaultInstance()) {
              artifact_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                      .newBuilder(
                          (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                                  .Gcs)
                              artifact_)
                      .mergeFrom(value)
                      .buildPartial();
            } else {
              artifact_ = value;
            }
            onChanged();
          } else {
            if (artifactCase_ == 3) {
              gcsBuilder_.mergeFrom(value);
            } else {
              gcsBuilder_.setMessage(value);
            }
          }
          artifactCase_ = 3;
          return this;
        }
        /**
         *
         *
         * <pre>
         * A Google Cloud Storage artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
         */
        public Builder clearGcs() {
          if (gcsBuilder_ == null) {
            if (artifactCase_ == 3) {
              artifactCase_ = 0;
              artifact_ = null;
              onChanged();
            }
          } else {
            if (artifactCase_ == 3) {
              artifactCase_ = 0;
              artifact_ = null;
            }
            gcsBuilder_.clear();
          }
          return this;
        }
        /**
         *
         *
         * <pre>
         * A Google Cloud Storage artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs.Builder
            getGcsBuilder() {
          return getGcsFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * A Google Cloud Storage artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.GcsOrBuilder
            getGcsOrBuilder() {
          if ((artifactCase_ == 3) && (gcsBuilder_ != null)) {
            return gcsBuilder_.getMessageOrBuilder();
          } else {
            if (artifactCase_ == 3) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs)
                  artifact_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * A Google Cloud Storage artifact.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact.Gcs gcs = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.GcsOrBuilder>
            getGcsFieldBuilder() {
          if (gcsBuilder_ == null) {
            if (!(artifactCase_ == 3)) {
              artifact_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                      .getDefaultInstance();
            }
            gcsBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs
                        .Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                        .GcsOrBuilder>(
                    (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Gcs)
                        artifact_,
                    getParentForChildren(),
                    isClean());
            artifact_ = null;
          }
          artifactCase_ = 3;
          onChanged();
          return gcsBuilder_;
        }

        private boolean allowInsecure_;
        /**
         *
         *
         * <pre>
         * Defaults to false. When false, recipes are subject to validations
         * based on the artifact type:
         * Remote: A checksum must be specified, and only protocols with
         * transport-layer security are permitted.
         * GCS:    An object generation number must be specified.
         * </pre>
         *
         * <code>bool allow_insecure = 4;</code>
         *
         * @return The allowInsecure.
         */
        @java.lang.Override
        public boolean getAllowInsecure() {
          return allowInsecure_;
        }
        /**
         *
         *
         * <pre>
         * Defaults to false. When false, recipes are subject to validations
         * based on the artifact type:
         * Remote: A checksum must be specified, and only protocols with
         * transport-layer security are permitted.
         * GCS:    An object generation number must be specified.
         * </pre>
         *
         * <code>bool allow_insecure = 4;</code>
         *
         * @param value The allowInsecure to set.
         * @return This builder for chaining.
         */
        public Builder setAllowInsecure(boolean value) {

          allowInsecure_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Defaults to false. When false, recipes are subject to validations
         * based on the artifact type:
         * Remote: A checksum must be specified, and only protocols with
         * transport-layer security are permitted.
         * GCS:    An object generation number must be specified.
         * </pre>
         *
         * <code>bool allow_insecure = 4;</code>
         *
         * @return This builder for chaining.
         */
        public Builder clearAllowInsecure() {
          bitField0_ = (bitField0_ & ~0x00000008);
          allowInsecure_ = false;
          onChanged();
          return this;
        }

        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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

        // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact)
      }

      // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact)
      private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          DEFAULT_INSTANCE;

      static {
        DEFAULT_INSTANCE =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact();
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
          getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }

    public interface StepOrBuilder
        extends
        // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Step)
        com.google.protobuf.MessageOrBuilder {

      /**
       *
       *
       * <pre>
       * Copies a file onto the instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
       *
       * @return Whether the fileCopy field is set.
       */
      boolean hasFileCopy();
      /**
       *
       *
       * <pre>
       * Copies a file onto the instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
       *
       * @return The fileCopy.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile getFileCopy();
      /**
       *
       *
       * <pre>
       * Copies a file onto the instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFileOrBuilder
          getFileCopyOrBuilder();

      /**
       *
       *
       * <pre>
       * Extracts an archive into the specified directory.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
       * </code>
       *
       * @return Whether the archiveExtraction field is set.
       */
      boolean hasArchiveExtraction();
      /**
       *
       *
       * <pre>
       * Extracts an archive into the specified directory.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
       * </code>
       *
       * @return The archiveExtraction.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
          getArchiveExtraction();
      /**
       *
       *
       * <pre>
       * Extracts an archive into the specified directory.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
       * </code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchiveOrBuilder
          getArchiveExtractionOrBuilder();

      /**
       *
       *
       * <pre>
       * Installs an MSI file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
       * </code>
       *
       * @return Whether the msiInstallation field is set.
       */
      boolean hasMsiInstallation();
      /**
       *
       *
       * <pre>
       * Installs an MSI file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
       * </code>
       *
       * @return The msiInstallation.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
          getMsiInstallation();
      /**
       *
       *
       * <pre>
       * Installs an MSI file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
       * </code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsiOrBuilder
          getMsiInstallationOrBuilder();

      /**
       *
       *
       * <pre>
       * Installs a deb file via dpkg.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
       * </code>
       *
       * @return Whether the dpkgInstallation field is set.
       */
      boolean hasDpkgInstallation();
      /**
       *
       *
       * <pre>
       * Installs a deb file via dpkg.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
       * </code>
       *
       * @return The dpkgInstallation.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
          getDpkgInstallation();
      /**
       *
       *
       * <pre>
       * Installs a deb file via dpkg.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
       * </code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkgOrBuilder
          getDpkgInstallationOrBuilder();

      /**
       *
       *
       * <pre>
       * Installs an rpm file via the rpm utility.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
       * </code>
       *
       * @return Whether the rpmInstallation field is set.
       */
      boolean hasRpmInstallation();
      /**
       *
       *
       * <pre>
       * Installs an rpm file via the rpm utility.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
       * </code>
       *
       * @return The rpmInstallation.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
          getRpmInstallation();
      /**
       *
       *
       * <pre>
       * Installs an rpm file via the rpm utility.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
       * </code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpmOrBuilder
          getRpmInstallationOrBuilder();

      /**
       *
       *
       * <pre>
       * Executes an artifact or local file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
       *
       * @return Whether the fileExec field is set.
       */
      boolean hasFileExec();
      /**
       *
       *
       * <pre>
       * Executes an artifact or local file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
       *
       * @return The fileExec.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile getFileExec();
      /**
       *
       *
       * <pre>
       * Executes an artifact or local file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFileOrBuilder
          getFileExecOrBuilder();

      /**
       *
       *
       * <pre>
       * Runs commands in a shell.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
       *
       * @return Whether the scriptRun field is set.
       */
      boolean hasScriptRun();
      /**
       *
       *
       * <pre>
       * Runs commands in a shell.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
       *
       * @return The scriptRun.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript getScriptRun();
      /**
       *
       *
       * <pre>
       * Runs commands in a shell.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScriptOrBuilder
          getScriptRunOrBuilder();

      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.StepCase
          getStepCase();
    }
    /**
     *
     *
     * <pre>
     * An action that can be taken as part of installing or updating a recipe.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step}
     */
    public static final class Step extends com.google.protobuf.GeneratedMessageV3
        implements
        // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step)
        StepOrBuilder {
      private static final long serialVersionUID = 0L;
      // Use Step.newBuilder() to construct.
      private Step(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }

      private Step() {}

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
        return new Step();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
        return this.unknownFields;
      }

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder.class);
      }

      public interface CopyFileOrBuilder
          extends
          // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile)
          com.google.protobuf.MessageOrBuilder {

        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The artifactId.
         */
        java.lang.String getArtifactId();
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for artifactId.
         */
        com.google.protobuf.ByteString getArtifactIdBytes();

        /**
         *
         *
         * <pre>
         * Required. The absolute path on the instance to put the file.
         * </pre>
         *
         * <code>string destination = 2 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The destination.
         */
        java.lang.String getDestination();
        /**
         *
         *
         * <pre>
         * Required. The absolute path on the instance to put the file.
         * </pre>
         *
         * <code>string destination = 2 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for destination.
         */
        com.google.protobuf.ByteString getDestinationBytes();

        /**
         *
         *
         * <pre>
         * Whether to allow this step to overwrite existing files. If this is
         * false and the file already exists the file is not overwritten
         * and the step is considered a success. Defaults to false.
         * </pre>
         *
         * <code>bool overwrite = 3;</code>
         *
         * @return The overwrite.
         */
        boolean getOverwrite();

        /**
         *
         *
         * <pre>
         * Consists of three octal digits which represent, in
         * order, the permissions of the owner, group, and other users for the
         * file (similarly to the numeric mode used in the linux chmod utility).
         * Each digit represents a three bit number with the 4 bit
         * corresponding to the read permissions, the 2 bit corresponds to the
         * write bit, and the one bit corresponds to the execute permission.
         * Default behavior is 755.
         * Below are some examples of permissions and their associated values:
         * read, write, and execute: 7
         * read and execute: 5
         * read and write: 6
         * read only: 4
         * </pre>
         *
         * <code>string permissions = 4;</code>
         *
         * @return The permissions.
         */
        java.lang.String getPermissions();
        /**
         *
         *
         * <pre>
         * Consists of three octal digits which represent, in
         * order, the permissions of the owner, group, and other users for the
         * file (similarly to the numeric mode used in the linux chmod utility).
         * Each digit represents a three bit number with the 4 bit
         * corresponding to the read permissions, the 2 bit corresponds to the
         * write bit, and the one bit corresponds to the execute permission.
         * Default behavior is 755.
         * Below are some examples of permissions and their associated values:
         * read, write, and execute: 7
         * read and execute: 5
         * read and write: 6
         * read only: 4
         * </pre>
         *
         * <code>string permissions = 4;</code>
         *
         * @return The bytes for permissions.
         */
        com.google.protobuf.ByteString getPermissionsBytes();
      }
      /**
       *
       *
       * <pre>
       * Copies the artifact to the specified path on the instance.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile}
       */
      public static final class CopyFile extends com.google.protobuf.GeneratedMessageV3
          implements
          // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile)
          CopyFileOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use CopyFile.newBuilder() to construct.
        private CopyFile(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }

        private CopyFile() {
          artifactId_ = "";
          destination_ = "";
          permissions_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
          return new CopyFile();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
          return this.unknownFields;
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_CopyFile_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_CopyFile_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile.class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                      .Builder.class);
        }

        public static final int ARTIFACT_ID_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object artifactId_ = "";
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The artifactId.
         */
        @java.lang.Override
        public java.lang.String getArtifactId() {
          java.lang.Object ref = artifactId_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            artifactId_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for artifactId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getArtifactIdBytes() {
          java.lang.Object ref = artifactId_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            artifactId_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int DESTINATION_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object destination_ = "";
        /**
         *
         *
         * <pre>
         * Required. The absolute path on the instance to put the file.
         * </pre>
         *
         * <code>string destination = 2 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The destination.
         */
        @java.lang.Override
        public java.lang.String getDestination() {
          java.lang.Object ref = destination_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            destination_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Required. The absolute path on the instance to put the file.
         * </pre>
         *
         * <code>string destination = 2 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for destination.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getDestinationBytes() {
          java.lang.Object ref = destination_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            destination_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int OVERWRITE_FIELD_NUMBER = 3;
        private boolean overwrite_ = false;
        /**
         *
         *
         * <pre>
         * Whether to allow this step to overwrite existing files. If this is
         * false and the file already exists the file is not overwritten
         * and the step is considered a success. Defaults to false.
         * </pre>
         *
         * <code>bool overwrite = 3;</code>
         *
         * @return The overwrite.
         */
        @java.lang.Override
        public boolean getOverwrite() {
          return overwrite_;
        }

        public static final int PERMISSIONS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private volatile java.lang.Object permissions_ = "";
        /**
         *
         *
         * <pre>
         * Consists of three octal digits which represent, in
         * order, the permissions of the owner, group, and other users for the
         * file (similarly to the numeric mode used in the linux chmod utility).
         * Each digit represents a three bit number with the 4 bit
         * corresponding to the read permissions, the 2 bit corresponds to the
         * write bit, and the one bit corresponds to the execute permission.
         * Default behavior is 755.
         * Below are some examples of permissions and their associated values:
         * read, write, and execute: 7
         * read and execute: 5
         * read and write: 6
         * read only: 4
         * </pre>
         *
         * <code>string permissions = 4;</code>
         *
         * @return The permissions.
         */
        @java.lang.Override
        public java.lang.String getPermissions() {
          java.lang.Object ref = permissions_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            permissions_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Consists of three octal digits which represent, in
         * order, the permissions of the owner, group, and other users for the
         * file (similarly to the numeric mode used in the linux chmod utility).
         * Each digit represents a three bit number with the 4 bit
         * corresponding to the read permissions, the 2 bit corresponds to the
         * write bit, and the one bit corresponds to the execute permission.
         * Default behavior is 755.
         * Below are some examples of permissions and their associated values:
         * read, write, and execute: 7
         * read and execute: 5
         * read and write: 6
         * read only: 4
         * </pre>
         *
         * <code>string permissions = 4;</code>
         *
         * @return The bytes for permissions.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getPermissionsBytes() {
          java.lang.Object ref = permissions_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            permissions_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        private byte memoizedIsInitialized = -1;

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

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(artifactId_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, artifactId_);
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destination_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 2, destination_);
          }
          if (overwrite_ != false) {
            output.writeBool(3, overwrite_);
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(permissions_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 4, permissions_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(artifactId_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, artifactId_);
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destination_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, destination_);
          }
          if (overwrite_ != false) {
            size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, overwrite_);
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(permissions_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, permissions_);
          }
          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
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile)) {
            return super.equals(obj);
          }
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile other =
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile) obj;

          if (!getArtifactId().equals(other.getArtifactId())) return false;
          if (!getDestination().equals(other.getDestination())) return false;
          if (getOverwrite() != other.getOverwrite()) return false;
          if (!getPermissions().equals(other.getPermissions())) 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();
          hash = (37 * hash) + ARTIFACT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getArtifactId().hashCode();
          hash = (37 * hash) + DESTINATION_FIELD_NUMBER;
          hash = (53 * hash) + getDestination().hashCode();
          hash = (37 * hash) + OVERWRITE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getOverwrite());
          hash = (37 * hash) + PERMISSIONS_FIELD_NUMBER;
          hash = (53 * hash) + getPermissions().hashCode();
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseFrom(java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseFrom(com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
          return newBuilder();
        }

        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile 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.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         *
         *
         * <pre>
         * Copies the artifact to the specified path on the instance.
         * </pre>
         *
         * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile}
         */
        public static final class Builder
            extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
            implements
            // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile)
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFileOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_CopyFile_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_CopyFile_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                        .class,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                        .Builder.class);
          }

          // Construct using
          // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile.newBuilder()
          private Builder() {}

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

          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            artifactId_ = "";
            destination_ = "";
            overwrite_ = false;
            permissions_ = "";
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_CopyFile_descriptor;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
              getDefaultInstanceForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                .getDefaultInstance();
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
              build() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile result =
                buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
              buildPartial() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile result =
                new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile(
                    this);
            if (bitField0_ != 0) {
              buildPartial0(result);
            }
            onBuilt();
            return result;
          }

          private void buildPartial0(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.artifactId_ = artifactId_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.destination_ = destination_;
            }
            if (((from_bitField0_ & 0x00000004) != 0)) {
              result.overwrite_ = overwrite_;
            }
            if (((from_bitField0_ & 0x00000008) != 0)) {
              result.permissions_ = permissions_;
            }
          }

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

          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.setField(field, value);
          }

          @java.lang.Override
          public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }

          @java.lang.Override
          public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }

          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index,
              java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }

          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other
                instanceof
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile) {
              return mergeFrom(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile)
                      other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile other) {
            if (other
                == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                    .getDefaultInstance()) return this;
            if (!other.getArtifactId().isEmpty()) {
              artifactId_ = other.artifactId_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            if (!other.getDestination().isEmpty()) {
              destination_ = other.destination_;
              bitField0_ |= 0x00000002;
              onChanged();
            }
            if (other.getOverwrite() != false) {
              setOverwrite(other.getOverwrite());
            }
            if (!other.getPermissions().isEmpty()) {
              permissions_ = other.permissions_;
              bitField0_ |= 0x00000008;
              onChanged();
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

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

          private int bitField0_;

          private java.lang.Object artifactId_ = "";
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The artifactId.
           */
          public java.lang.String getArtifactId() {
            java.lang.Object ref = artifactId_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              artifactId_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The bytes for artifactId.
           */
          public com.google.protobuf.ByteString getArtifactIdBytes() {
            java.lang.Object ref = artifactId_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              artifactId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactId(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            artifactId_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearArtifactId() {
            artifactId_ = getDefaultInstance().getArtifactId();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The bytes for artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactIdBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            artifactId_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }

          private java.lang.Object destination_ = "";
          /**
           *
           *
           * <pre>
           * Required. The absolute path on the instance to put the file.
           * </pre>
           *
           * <code>string destination = 2 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The destination.
           */
          public java.lang.String getDestination() {
            java.lang.Object ref = destination_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              destination_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The absolute path on the instance to put the file.
           * </pre>
           *
           * <code>string destination = 2 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The bytes for destination.
           */
          public com.google.protobuf.ByteString getDestinationBytes() {
            java.lang.Object ref = destination_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              destination_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The absolute path on the instance to put the file.
           * </pre>
           *
           * <code>string destination = 2 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The destination to set.
           * @return This builder for chaining.
           */
          public Builder setDestination(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            destination_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The absolute path on the instance to put the file.
           * </pre>
           *
           * <code>string destination = 2 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearDestination() {
            destination_ = getDefaultInstance().getDestination();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The absolute path on the instance to put the file.
           * </pre>
           *
           * <code>string destination = 2 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The bytes for destination to set.
           * @return This builder for chaining.
           */
          public Builder setDestinationBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            destination_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }

          private boolean overwrite_;
          /**
           *
           *
           * <pre>
           * Whether to allow this step to overwrite existing files. If this is
           * false and the file already exists the file is not overwritten
           * and the step is considered a success. Defaults to false.
           * </pre>
           *
           * <code>bool overwrite = 3;</code>
           *
           * @return The overwrite.
           */
          @java.lang.Override
          public boolean getOverwrite() {
            return overwrite_;
          }
          /**
           *
           *
           * <pre>
           * Whether to allow this step to overwrite existing files. If this is
           * false and the file already exists the file is not overwritten
           * and the step is considered a success. Defaults to false.
           * </pre>
           *
           * <code>bool overwrite = 3;</code>
           *
           * @param value The overwrite to set.
           * @return This builder for chaining.
           */
          public Builder setOverwrite(boolean value) {

            overwrite_ = value;
            bitField0_ |= 0x00000004;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Whether to allow this step to overwrite existing files. If this is
           * false and the file already exists the file is not overwritten
           * and the step is considered a success. Defaults to false.
           * </pre>
           *
           * <code>bool overwrite = 3;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearOverwrite() {
            bitField0_ = (bitField0_ & ~0x00000004);
            overwrite_ = false;
            onChanged();
            return this;
          }

          private java.lang.Object permissions_ = "";
          /**
           *
           *
           * <pre>
           * Consists of three octal digits which represent, in
           * order, the permissions of the owner, group, and other users for the
           * file (similarly to the numeric mode used in the linux chmod utility).
           * Each digit represents a three bit number with the 4 bit
           * corresponding to the read permissions, the 2 bit corresponds to the
           * write bit, and the one bit corresponds to the execute permission.
           * Default behavior is 755.
           * Below are some examples of permissions and their associated values:
           * read, write, and execute: 7
           * read and execute: 5
           * read and write: 6
           * read only: 4
           * </pre>
           *
           * <code>string permissions = 4;</code>
           *
           * @return The permissions.
           */
          public java.lang.String getPermissions() {
            java.lang.Object ref = permissions_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              permissions_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Consists of three octal digits which represent, in
           * order, the permissions of the owner, group, and other users for the
           * file (similarly to the numeric mode used in the linux chmod utility).
           * Each digit represents a three bit number with the 4 bit
           * corresponding to the read permissions, the 2 bit corresponds to the
           * write bit, and the one bit corresponds to the execute permission.
           * Default behavior is 755.
           * Below are some examples of permissions and their associated values:
           * read, write, and execute: 7
           * read and execute: 5
           * read and write: 6
           * read only: 4
           * </pre>
           *
           * <code>string permissions = 4;</code>
           *
           * @return The bytes for permissions.
           */
          public com.google.protobuf.ByteString getPermissionsBytes() {
            java.lang.Object ref = permissions_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              permissions_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Consists of three octal digits which represent, in
           * order, the permissions of the owner, group, and other users for the
           * file (similarly to the numeric mode used in the linux chmod utility).
           * Each digit represents a three bit number with the 4 bit
           * corresponding to the read permissions, the 2 bit corresponds to the
           * write bit, and the one bit corresponds to the execute permission.
           * Default behavior is 755.
           * Below are some examples of permissions and their associated values:
           * read, write, and execute: 7
           * read and execute: 5
           * read and write: 6
           * read only: 4
           * </pre>
           *
           * <code>string permissions = 4;</code>
           *
           * @param value The permissions to set.
           * @return This builder for chaining.
           */
          public Builder setPermissions(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            permissions_ = value;
            bitField0_ |= 0x00000008;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Consists of three octal digits which represent, in
           * order, the permissions of the owner, group, and other users for the
           * file (similarly to the numeric mode used in the linux chmod utility).
           * Each digit represents a three bit number with the 4 bit
           * corresponding to the read permissions, the 2 bit corresponds to the
           * write bit, and the one bit corresponds to the execute permission.
           * Default behavior is 755.
           * Below are some examples of permissions and their associated values:
           * read, write, and execute: 7
           * read and execute: 5
           * read and write: 6
           * read only: 4
           * </pre>
           *
           * <code>string permissions = 4;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearPermissions() {
            permissions_ = getDefaultInstance().getPermissions();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Consists of three octal digits which represent, in
           * order, the permissions of the owner, group, and other users for the
           * file (similarly to the numeric mode used in the linux chmod utility).
           * Each digit represents a three bit number with the 4 bit
           * corresponding to the read permissions, the 2 bit corresponds to the
           * write bit, and the one bit corresponds to the execute permission.
           * Default behavior is 755.
           * Below are some examples of permissions and their associated values:
           * read, write, and execute: 7
           * read and execute: 5
           * read and write: 6
           * read only: 4
           * </pre>
           *
           * <code>string permissions = 4;</code>
           *
           * @param value The bytes for permissions to set.
           * @return This builder for chaining.
           */
          public Builder setPermissionsBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            permissions_ = value;
            bitField0_ |= 0x00000008;
            onChanged();
            return this;
          }

          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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

          // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile)
        }

        // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile)
        private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .CopyFile
            DEFAULT_INSTANCE;

        static {
          DEFAULT_INSTANCE =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile();
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
      }

      public interface ExtractArchiveOrBuilder
          extends
          // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive)
          com.google.protobuf.MessageOrBuilder {

        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The artifactId.
         */
        java.lang.String getArtifactId();
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for artifactId.
         */
        com.google.protobuf.ByteString getArtifactIdBytes();

        /**
         *
         *
         * <pre>
         * Directory to extract archive to.
         * Defaults to `/` on Linux or `C:&#92;` on Windows.
         * </pre>
         *
         * <code>string destination = 2;</code>
         *
         * @return The destination.
         */
        java.lang.String getDestination();
        /**
         *
         *
         * <pre>
         * Directory to extract archive to.
         * Defaults to `/` on Linux or `C:&#92;` on Windows.
         * </pre>
         *
         * <code>string destination = 2;</code>
         *
         * @return The bytes for destination.
         */
        com.google.protobuf.ByteString getDestinationBytes();

        /**
         *
         *
         * <pre>
         * Required. The type of the archive to extract.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType type = 3 [(.google.api.field_behavior) = REQUIRED];
         * </code>
         *
         * @return The enum numeric value on the wire for type.
         */
        int getTypeValue();
        /**
         *
         *
         * <pre>
         * Required. The type of the archive to extract.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType type = 3 [(.google.api.field_behavior) = REQUIRED];
         * </code>
         *
         * @return The type.
         */
        com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                .ArchiveType
            getType();
      }
      /**
       *
       *
       * <pre>
       * Extracts an archive of the type specified in the specified directory.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive}
       */
      public static final class ExtractArchive extends com.google.protobuf.GeneratedMessageV3
          implements
          // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive)
          ExtractArchiveOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use ExtractArchive.newBuilder() to construct.
        private ExtractArchive(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }

        private ExtractArchive() {
          artifactId_ = "";
          destination_ = "";
          type_ = 0;
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
          return new ExtractArchive();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
          return this.unknownFields;
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExtractArchive_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExtractArchive_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                      .class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                      .Builder.class);
        }

        /**
         *
         *
         * <pre>
         * Specifying the type of archive.
         * </pre>
         *
         * Protobuf enum {@code
         * google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType}
         */
        public enum ArchiveType implements com.google.protobuf.ProtocolMessageEnum {
          /**
           *
           *
           * <pre>
           * Indicates that the archive type isn't specified.
           * </pre>
           *
           * <code>ARCHIVE_TYPE_UNSPECIFIED = 0;</code>
           */
          ARCHIVE_TYPE_UNSPECIFIED(0),
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a tar archive with no encryption.
           * </pre>
           *
           * <code>TAR = 1;</code>
           */
          TAR(1),
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a tar archive with gzip encryption.
           * </pre>
           *
           * <code>TAR_GZIP = 2;</code>
           */
          TAR_GZIP(2),
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a tar archive with bzip encryption.
           * </pre>
           *
           * <code>TAR_BZIP = 3;</code>
           */
          TAR_BZIP(3),
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a tar archive with lzma encryption.
           * </pre>
           *
           * <code>TAR_LZMA = 4;</code>
           */
          TAR_LZMA(4),
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a tar archive with xz encryption.
           * </pre>
           *
           * <code>TAR_XZ = 5;</code>
           */
          TAR_XZ(5),
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a zip archive.
           * </pre>
           *
           * <code>ZIP = 11;</code>
           */
          ZIP(11),
          UNRECOGNIZED(-1),
          ;

          /**
           *
           *
           * <pre>
           * Indicates that the archive type isn't specified.
           * </pre>
           *
           * <code>ARCHIVE_TYPE_UNSPECIFIED = 0;</code>
           */
          public static final int ARCHIVE_TYPE_UNSPECIFIED_VALUE = 0;
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a tar archive with no encryption.
           * </pre>
           *
           * <code>TAR = 1;</code>
           */
          public static final int TAR_VALUE = 1;
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a tar archive with gzip encryption.
           * </pre>
           *
           * <code>TAR_GZIP = 2;</code>
           */
          public static final int TAR_GZIP_VALUE = 2;
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a tar archive with bzip encryption.
           * </pre>
           *
           * <code>TAR_BZIP = 3;</code>
           */
          public static final int TAR_BZIP_VALUE = 3;
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a tar archive with lzma encryption.
           * </pre>
           *
           * <code>TAR_LZMA = 4;</code>
           */
          public static final int TAR_LZMA_VALUE = 4;
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a tar archive with xz encryption.
           * </pre>
           *
           * <code>TAR_XZ = 5;</code>
           */
          public static final int TAR_XZ_VALUE = 5;
          /**
           *
           *
           * <pre>
           * Indicates that the archive is a zip archive.
           * </pre>
           *
           * <code>ZIP = 11;</code>
           */
          public static final int ZIP_VALUE = 11;

          public final int getNumber() {
            if (this == UNRECOGNIZED) {
              throw new java.lang.IllegalArgumentException(
                  "Can't get the number of an unknown enum value.");
            }
            return value;
          }

          /**
           * @param value The numeric wire value of the corresponding enum entry.
           * @return The enum associated with the given numeric wire value.
           * @deprecated Use {@link #forNumber(int)} instead.
           */
          @java.lang.Deprecated
          public static ArchiveType valueOf(int value) {
            return forNumber(value);
          }

          /**
           * @param value The numeric wire value of the corresponding enum entry.
           * @return The enum associated with the given numeric wire value.
           */
          public static ArchiveType forNumber(int value) {
            switch (value) {
              case 0:
                return ARCHIVE_TYPE_UNSPECIFIED;
              case 1:
                return TAR;
              case 2:
                return TAR_GZIP;
              case 3:
                return TAR_BZIP;
              case 4:
                return TAR_LZMA;
              case 5:
                return TAR_XZ;
              case 11:
                return ZIP;
              default:
                return null;
            }
          }

          public static com.google.protobuf.Internal.EnumLiteMap<ArchiveType>
              internalGetValueMap() {
            return internalValueMap;
          }

          private static final com.google.protobuf.Internal.EnumLiteMap<ArchiveType>
              internalValueMap =
                  new com.google.protobuf.Internal.EnumLiteMap<ArchiveType>() {
                    public ArchiveType findValueByNumber(int number) {
                      return ArchiveType.forNumber(number);
                    }
                  };

          public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
              throw new java.lang.IllegalStateException(
                  "Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
          }

          public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
          }

          public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                .getDescriptor()
                .getEnumTypes()
                .get(0);
          }

          private static final ArchiveType[] VALUES = values();

          public static ArchiveType valueOf(
              com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
              throw new java.lang.IllegalArgumentException(
                  "EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
              return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
          }

          private final int value;

          private ArchiveType(int value) {
            this.value = value;
          }

          // @@protoc_insertion_point(enum_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType)
        }

        public static final int ARTIFACT_ID_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object artifactId_ = "";
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The artifactId.
         */
        @java.lang.Override
        public java.lang.String getArtifactId() {
          java.lang.Object ref = artifactId_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            artifactId_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for artifactId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getArtifactIdBytes() {
          java.lang.Object ref = artifactId_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            artifactId_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int DESTINATION_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object destination_ = "";
        /**
         *
         *
         * <pre>
         * Directory to extract archive to.
         * Defaults to `/` on Linux or `C:&#92;` on Windows.
         * </pre>
         *
         * <code>string destination = 2;</code>
         *
         * @return The destination.
         */
        @java.lang.Override
        public java.lang.String getDestination() {
          java.lang.Object ref = destination_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            destination_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Directory to extract archive to.
         * Defaults to `/` on Linux or `C:&#92;` on Windows.
         * </pre>
         *
         * <code>string destination = 2;</code>
         *
         * @return The bytes for destination.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getDestinationBytes() {
          java.lang.Object ref = destination_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            destination_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int TYPE_FIELD_NUMBER = 3;
        private int type_ = 0;
        /**
         *
         *
         * <pre>
         * Required. The type of the archive to extract.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType type = 3 [(.google.api.field_behavior) = REQUIRED];
         * </code>
         *
         * @return The enum numeric value on the wire for type.
         */
        @java.lang.Override
        public int getTypeValue() {
          return type_;
        }
        /**
         *
         *
         * <pre>
         * Required. The type of the archive to extract.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType type = 3 [(.google.api.field_behavior) = REQUIRED];
         * </code>
         *
         * @return The type.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                .ArchiveType
            getType() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                  .ArchiveType
              result =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                      .ArchiveType.forNumber(type_);
          return result == null
              ? com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                  .ArchiveType.UNRECOGNIZED
              : result;
        }

        private byte memoizedIsInitialized = -1;

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

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(artifactId_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, artifactId_);
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destination_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 2, destination_);
          }
          if (type_
              != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                  .ArchiveType.ARCHIVE_TYPE_UNSPECIFIED
                  .getNumber()) {
            output.writeEnum(3, type_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(artifactId_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, artifactId_);
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destination_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, destination_);
          }
          if (type_
              != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                  .ArchiveType.ARCHIVE_TYPE_UNSPECIFIED
                  .getNumber()) {
            size += com.google.protobuf.CodedOutputStream.computeEnumSize(3, type_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
            return true;
          }
          if (!(obj
              instanceof
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive)) {
            return super.equals(obj);
          }
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive other =
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive)
                  obj;

          if (!getArtifactId().equals(other.getArtifactId())) return false;
          if (!getDestination().equals(other.getDestination())) return false;
          if (type_ != other.type_) 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();
          hash = (37 * hash) + ARTIFACT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getArtifactId().hashCode();
          hash = (37 * hash) + DESTINATION_FIELD_NUMBER;
          hash = (53 * hash) + getDestination().hashCode();
          hash = (37 * hash) + TYPE_FIELD_NUMBER;
          hash = (53 * hash) + type_;
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseFrom(java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseFrom(com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
          return newBuilder();
        }

        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                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.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         *
         *
         * <pre>
         * Extracts an archive of the type specified in the specified directory.
         * </pre>
         *
         * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive}
         */
        public static final class Builder
            extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
            implements
            // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive)
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchiveOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExtractArchive_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExtractArchive_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .ExtractArchive.class,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .ExtractArchive.Builder.class);
          }

          // Construct using
          // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive.newBuilder()
          private Builder() {}

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

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

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExtractArchive_descriptor;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
              getDefaultInstanceForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                .getDefaultInstance();
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
              build() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
              buildPartial() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                result =
                    new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .ExtractArchive(this);
            if (bitField0_ != 0) {
              buildPartial0(result);
            }
            onBuilt();
            return result;
          }

          private void buildPartial0(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                  result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.artifactId_ = artifactId_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.destination_ = destination_;
            }
            if (((from_bitField0_ & 0x00000004) != 0)) {
              result.type_ = type_;
            }
          }

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

          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.setField(field, value);
          }

          @java.lang.Override
          public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }

          @java.lang.Override
          public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }

          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index,
              java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }

          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other
                instanceof
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive) {
              return mergeFrom(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                          .ExtractArchive)
                      other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                  other) {
            if (other
                == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                    .getDefaultInstance()) return this;
            if (!other.getArtifactId().isEmpty()) {
              artifactId_ = other.artifactId_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            if (!other.getDestination().isEmpty()) {
              destination_ = other.destination_;
              bitField0_ |= 0x00000002;
              onChanged();
            }
            if (other.type_ != 0) {
              setTypeValue(other.getTypeValue());
            }
            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:
                    {
                      artifactId_ = input.readStringRequireUtf8();
                      bitField0_ |= 0x00000001;
                      break;
                    } // case 10
                  case 18:
                    {
                      destination_ = input.readStringRequireUtf8();
                      bitField0_ |= 0x00000002;
                      break;
                    } // case 18
                  case 24:
                    {
                      type_ = input.readEnum();
                      bitField0_ |= 0x00000004;
                      break;
                    } // case 24
                  default:
                    {
                      if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                        done = true; // was an endgroup tag
                      }
                      break;
                    } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }

          private int bitField0_;

          private java.lang.Object artifactId_ = "";
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The artifactId.
           */
          public java.lang.String getArtifactId() {
            java.lang.Object ref = artifactId_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              artifactId_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The bytes for artifactId.
           */
          public com.google.protobuf.ByteString getArtifactIdBytes() {
            java.lang.Object ref = artifactId_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              artifactId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactId(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            artifactId_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearArtifactId() {
            artifactId_ = getDefaultInstance().getArtifactId();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The bytes for artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactIdBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            artifactId_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }

          private java.lang.Object destination_ = "";
          /**
           *
           *
           * <pre>
           * Directory to extract archive to.
           * Defaults to `/` on Linux or `C:&#92;` on Windows.
           * </pre>
           *
           * <code>string destination = 2;</code>
           *
           * @return The destination.
           */
          public java.lang.String getDestination() {
            java.lang.Object ref = destination_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              destination_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Directory to extract archive to.
           * Defaults to `/` on Linux or `C:&#92;` on Windows.
           * </pre>
           *
           * <code>string destination = 2;</code>
           *
           * @return The bytes for destination.
           */
          public com.google.protobuf.ByteString getDestinationBytes() {
            java.lang.Object ref = destination_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              destination_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Directory to extract archive to.
           * Defaults to `/` on Linux or `C:&#92;` on Windows.
           * </pre>
           *
           * <code>string destination = 2;</code>
           *
           * @param value The destination to set.
           * @return This builder for chaining.
           */
          public Builder setDestination(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            destination_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Directory to extract archive to.
           * Defaults to `/` on Linux or `C:&#92;` on Windows.
           * </pre>
           *
           * <code>string destination = 2;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearDestination() {
            destination_ = getDefaultInstance().getDestination();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Directory to extract archive to.
           * Defaults to `/` on Linux or `C:&#92;` on Windows.
           * </pre>
           *
           * <code>string destination = 2;</code>
           *
           * @param value The bytes for destination to set.
           * @return This builder for chaining.
           */
          public Builder setDestinationBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            destination_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }

          private int type_ = 0;
          /**
           *
           *
           * <pre>
           * Required. The type of the archive to extract.
           * </pre>
           *
           * <code>
           * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType type = 3 [(.google.api.field_behavior) = REQUIRED];
           * </code>
           *
           * @return The enum numeric value on the wire for type.
           */
          @java.lang.Override
          public int getTypeValue() {
            return type_;
          }
          /**
           *
           *
           * <pre>
           * Required. The type of the archive to extract.
           * </pre>
           *
           * <code>
           * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType type = 3 [(.google.api.field_behavior) = REQUIRED];
           * </code>
           *
           * @param value The enum numeric value on the wire for type to set.
           * @return This builder for chaining.
           */
          public Builder setTypeValue(int value) {
            type_ = value;
            bitField0_ |= 0x00000004;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The type of the archive to extract.
           * </pre>
           *
           * <code>
           * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType type = 3 [(.google.api.field_behavior) = REQUIRED];
           * </code>
           *
           * @return The type.
           */
          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                  .ArchiveType
              getType() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                    .ArchiveType
                result =
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .ExtractArchive.ArchiveType.forNumber(type_);
            return result == null
                ? com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                    .ArchiveType.UNRECOGNIZED
                : result;
          }
          /**
           *
           *
           * <pre>
           * Required. The type of the archive to extract.
           * </pre>
           *
           * <code>
           * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType type = 3 [(.google.api.field_behavior) = REQUIRED];
           * </code>
           *
           * @param value The type to set.
           * @return This builder for chaining.
           */
          public Builder setType(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                      .ArchiveType
                  value) {
            if (value == null) {
              throw new NullPointerException();
            }
            bitField0_ |= 0x00000004;
            type_ = value.getNumber();
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The type of the archive to extract.
           * </pre>
           *
           * <code>
           * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive.ArchiveType type = 3 [(.google.api.field_behavior) = REQUIRED];
           * </code>
           *
           * @return This builder for chaining.
           */
          public Builder clearType() {
            bitField0_ = (bitField0_ & ~0x00000004);
            type_ = 0;
            onChanged();
            return this;
          }

          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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

          // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive)
        }

        // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive)
        private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            DEFAULT_INSTANCE;

        static {
          DEFAULT_INSTANCE =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                  .ExtractArchive();
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchive
            getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
            getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
      }

      public interface InstallMsiOrBuilder
          extends
          // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi)
          com.google.protobuf.MessageOrBuilder {

        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The artifactId.
         */
        java.lang.String getArtifactId();
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for artifactId.
         */
        com.google.protobuf.ByteString getArtifactIdBytes();

        /**
         *
         *
         * <pre>
         * The flags to use when installing the MSI
         * defaults to ["/i"] (i.e. the install flag).
         * </pre>
         *
         * <code>repeated string flags = 2;</code>
         *
         * @return A list containing the flags.
         */
        java.util.List<java.lang.String> getFlagsList();
        /**
         *
         *
         * <pre>
         * The flags to use when installing the MSI
         * defaults to ["/i"] (i.e. the install flag).
         * </pre>
         *
         * <code>repeated string flags = 2;</code>
         *
         * @return The count of flags.
         */
        int getFlagsCount();
        /**
         *
         *
         * <pre>
         * The flags to use when installing the MSI
         * defaults to ["/i"] (i.e. the install flag).
         * </pre>
         *
         * <code>repeated string flags = 2;</code>
         *
         * @param index The index of the element to return.
         * @return The flags at the given index.
         */
        java.lang.String getFlags(int index);
        /**
         *
         *
         * <pre>
         * The flags to use when installing the MSI
         * defaults to ["/i"] (i.e. the install flag).
         * </pre>
         *
         * <code>repeated string flags = 2;</code>
         *
         * @param index The index of the value to return.
         * @return The bytes of the flags at the given index.
         */
        com.google.protobuf.ByteString getFlagsBytes(int index);

        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 3;</code>
         *
         * @return A list containing the allowedExitCodes.
         */
        java.util.List<java.lang.Integer> getAllowedExitCodesList();
        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 3;</code>
         *
         * @return The count of allowedExitCodes.
         */
        int getAllowedExitCodesCount();
        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 3;</code>
         *
         * @param index The index of the element to return.
         * @return The allowedExitCodes at the given index.
         */
        int getAllowedExitCodes(int index);
      }
      /**
       *
       *
       * <pre>
       * Installs an MSI file.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi}
       */
      public static final class InstallMsi extends com.google.protobuf.GeneratedMessageV3
          implements
          // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi)
          InstallMsiOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use InstallMsi.newBuilder() to construct.
        private InstallMsi(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }

        private InstallMsi() {
          artifactId_ = "";
          flags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          allowedExitCodes_ = emptyIntList();
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
          return new InstallMsi();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
          return this.unknownFields;
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallMsi_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallMsi_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                      .class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                      .Builder.class);
        }

        public static final int ARTIFACT_ID_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object artifactId_ = "";
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The artifactId.
         */
        @java.lang.Override
        public java.lang.String getArtifactId() {
          java.lang.Object ref = artifactId_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            artifactId_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for artifactId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getArtifactIdBytes() {
          java.lang.Object ref = artifactId_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            artifactId_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int FLAGS_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private com.google.protobuf.LazyStringList flags_;
        /**
         *
         *
         * <pre>
         * The flags to use when installing the MSI
         * defaults to ["/i"] (i.e. the install flag).
         * </pre>
         *
         * <code>repeated string flags = 2;</code>
         *
         * @return A list containing the flags.
         */
        public com.google.protobuf.ProtocolStringList getFlagsList() {
          return flags_;
        }
        /**
         *
         *
         * <pre>
         * The flags to use when installing the MSI
         * defaults to ["/i"] (i.e. the install flag).
         * </pre>
         *
         * <code>repeated string flags = 2;</code>
         *
         * @return The count of flags.
         */
        public int getFlagsCount() {
          return flags_.size();
        }
        /**
         *
         *
         * <pre>
         * The flags to use when installing the MSI
         * defaults to ["/i"] (i.e. the install flag).
         * </pre>
         *
         * <code>repeated string flags = 2;</code>
         *
         * @param index The index of the element to return.
         * @return The flags at the given index.
         */
        public java.lang.String getFlags(int index) {
          return flags_.get(index);
        }
        /**
         *
         *
         * <pre>
         * The flags to use when installing the MSI
         * defaults to ["/i"] (i.e. the install flag).
         * </pre>
         *
         * <code>repeated string flags = 2;</code>
         *
         * @param index The index of the value to return.
         * @return The bytes of the flags at the given index.
         */
        public com.google.protobuf.ByteString getFlagsBytes(int index) {
          return flags_.getByteString(index);
        }

        public static final int ALLOWED_EXIT_CODES_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private com.google.protobuf.Internal.IntList allowedExitCodes_;
        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 3;</code>
         *
         * @return A list containing the allowedExitCodes.
         */
        @java.lang.Override
        public java.util.List<java.lang.Integer> getAllowedExitCodesList() {
          return allowedExitCodes_;
        }
        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 3;</code>
         *
         * @return The count of allowedExitCodes.
         */
        public int getAllowedExitCodesCount() {
          return allowedExitCodes_.size();
        }
        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 3;</code>
         *
         * @param index The index of the element to return.
         * @return The allowedExitCodes at the given index.
         */
        public int getAllowedExitCodes(int index) {
          return allowedExitCodes_.getInt(index);
        }

        private int allowedExitCodesMemoizedSerializedSize = -1;

        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 {
          getSerializedSize();
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(artifactId_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, artifactId_);
          }
          for (int i = 0; i < flags_.size(); i++) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 2, flags_.getRaw(i));
          }
          if (getAllowedExitCodesList().size() > 0) {
            output.writeUInt32NoTag(26);
            output.writeUInt32NoTag(allowedExitCodesMemoizedSerializedSize);
          }
          for (int i = 0; i < allowedExitCodes_.size(); i++) {
            output.writeInt32NoTag(allowedExitCodes_.getInt(i));
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(artifactId_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, artifactId_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < flags_.size(); i++) {
              dataSize += computeStringSizeNoTag(flags_.getRaw(i));
            }
            size += dataSize;
            size += 1 * getFlagsList().size();
          }
          {
            int dataSize = 0;
            for (int i = 0; i < allowedExitCodes_.size(); i++) {
              dataSize +=
                  com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(
                      allowedExitCodes_.getInt(i));
            }
            size += dataSize;
            if (!getAllowedExitCodesList().isEmpty()) {
              size += 1;
              size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
            }
            allowedExitCodesMemoizedSerializedSize = dataSize;
          }
          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
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi)) {
            return super.equals(obj);
          }
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi other =
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi) obj;

          if (!getArtifactId().equals(other.getArtifactId())) return false;
          if (!getFlagsList().equals(other.getFlagsList())) return false;
          if (!getAllowedExitCodesList().equals(other.getAllowedExitCodesList())) 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();
          hash = (37 * hash) + ARTIFACT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getArtifactId().hashCode();
          if (getFlagsCount() > 0) {
            hash = (37 * hash) + FLAGS_FIELD_NUMBER;
            hash = (53 * hash) + getFlagsList().hashCode();
          }
          if (getAllowedExitCodesCount() > 0) {
            hash = (37 * hash) + ALLOWED_EXIT_CODES_FIELD_NUMBER;
            hash = (53 * hash) + getAllowedExitCodesList().hashCode();
          }
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseFrom(java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseFrom(com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
          return newBuilder();
        }

        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                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.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         *
         *
         * <pre>
         * Installs an MSI file.
         * </pre>
         *
         * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi}
         */
        public static final class Builder
            extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
            implements
            // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi)
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsiOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallMsi_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallMsi_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                        .class,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                        .Builder.class);
          }

          // Construct using
          // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi.newBuilder()
          private Builder() {}

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

          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            artifactId_ = "";
            flags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000002);
            allowedExitCodes_ = emptyIntList();
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallMsi_descriptor;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
              getDefaultInstanceForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                .getDefaultInstance();
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
              build() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi result =
                buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
              buildPartial() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi result =
                new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi(
                    this);
            buildPartialRepeatedFields(result);
            if (bitField0_ != 0) {
              buildPartial0(result);
            }
            onBuilt();
            return result;
          }

          private void buildPartialRepeatedFields(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                  result) {
            if (((bitField0_ & 0x00000002) != 0)) {
              flags_ = flags_.getUnmodifiableView();
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.flags_ = flags_;
            if (((bitField0_ & 0x00000004) != 0)) {
              allowedExitCodes_.makeImmutable();
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.allowedExitCodes_ = allowedExitCodes_;
          }

          private void buildPartial0(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                  result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.artifactId_ = artifactId_;
            }
          }

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

          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.setField(field, value);
          }

          @java.lang.Override
          public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }

          @java.lang.Override
          public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }

          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index,
              java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }

          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other
                instanceof
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi) {
              return mergeFrom(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi)
                      other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi other) {
            if (other
                == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                    .getDefaultInstance()) return this;
            if (!other.getArtifactId().isEmpty()) {
              artifactId_ = other.artifactId_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            if (!other.flags_.isEmpty()) {
              if (flags_.isEmpty()) {
                flags_ = other.flags_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureFlagsIsMutable();
                flags_.addAll(other.flags_);
              }
              onChanged();
            }
            if (!other.allowedExitCodes_.isEmpty()) {
              if (allowedExitCodes_.isEmpty()) {
                allowedExitCodes_ = other.allowedExitCodes_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureAllowedExitCodesIsMutable();
                allowedExitCodes_.addAll(other.allowedExitCodes_);
              }
              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:
                    {
                      artifactId_ = input.readStringRequireUtf8();
                      bitField0_ |= 0x00000001;
                      break;
                    } // case 10
                  case 18:
                    {
                      java.lang.String s = input.readStringRequireUtf8();
                      ensureFlagsIsMutable();
                      flags_.add(s);
                      break;
                    } // case 18
                  case 24:
                    {
                      int v = input.readInt32();
                      ensureAllowedExitCodesIsMutable();
                      allowedExitCodes_.addInt(v);
                      break;
                    } // case 24
                  case 26:
                    {
                      int length = input.readRawVarint32();
                      int limit = input.pushLimit(length);
                      ensureAllowedExitCodesIsMutable();
                      while (input.getBytesUntilLimit() > 0) {
                        allowedExitCodes_.addInt(input.readInt32());
                      }
                      input.popLimit(limit);
                      break;
                    } // case 26
                  default:
                    {
                      if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                        done = true; // was an endgroup tag
                      }
                      break;
                    } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }

          private int bitField0_;

          private java.lang.Object artifactId_ = "";
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The artifactId.
           */
          public java.lang.String getArtifactId() {
            java.lang.Object ref = artifactId_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              artifactId_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The bytes for artifactId.
           */
          public com.google.protobuf.ByteString getArtifactIdBytes() {
            java.lang.Object ref = artifactId_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              artifactId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactId(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            artifactId_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearArtifactId() {
            artifactId_ = getDefaultInstance().getArtifactId();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The bytes for artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactIdBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            artifactId_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }

          private com.google.protobuf.LazyStringList flags_ =
              com.google.protobuf.LazyStringArrayList.EMPTY;

          private void ensureFlagsIsMutable() {
            if (!((bitField0_ & 0x00000002) != 0)) {
              flags_ = new com.google.protobuf.LazyStringArrayList(flags_);
              bitField0_ |= 0x00000002;
            }
          }
          /**
           *
           *
           * <pre>
           * The flags to use when installing the MSI
           * defaults to ["/i"] (i.e. the install flag).
           * </pre>
           *
           * <code>repeated string flags = 2;</code>
           *
           * @return A list containing the flags.
           */
          public com.google.protobuf.ProtocolStringList getFlagsList() {
            return flags_.getUnmodifiableView();
          }
          /**
           *
           *
           * <pre>
           * The flags to use when installing the MSI
           * defaults to ["/i"] (i.e. the install flag).
           * </pre>
           *
           * <code>repeated string flags = 2;</code>
           *
           * @return The count of flags.
           */
          public int getFlagsCount() {
            return flags_.size();
          }
          /**
           *
           *
           * <pre>
           * The flags to use when installing the MSI
           * defaults to ["/i"] (i.e. the install flag).
           * </pre>
           *
           * <code>repeated string flags = 2;</code>
           *
           * @param index The index of the element to return.
           * @return The flags at the given index.
           */
          public java.lang.String getFlags(int index) {
            return flags_.get(index);
          }
          /**
           *
           *
           * <pre>
           * The flags to use when installing the MSI
           * defaults to ["/i"] (i.e. the install flag).
           * </pre>
           *
           * <code>repeated string flags = 2;</code>
           *
           * @param index The index of the value to return.
           * @return The bytes of the flags at the given index.
           */
          public com.google.protobuf.ByteString getFlagsBytes(int index) {
            return flags_.getByteString(index);
          }
          /**
           *
           *
           * <pre>
           * The flags to use when installing the MSI
           * defaults to ["/i"] (i.e. the install flag).
           * </pre>
           *
           * <code>repeated string flags = 2;</code>
           *
           * @param index The index to set the value at.
           * @param value The flags to set.
           * @return This builder for chaining.
           */
          public Builder setFlags(int index, java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFlagsIsMutable();
            flags_.set(index, value);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * The flags to use when installing the MSI
           * defaults to ["/i"] (i.e. the install flag).
           * </pre>
           *
           * <code>repeated string flags = 2;</code>
           *
           * @param value The flags to add.
           * @return This builder for chaining.
           */
          public Builder addFlags(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFlagsIsMutable();
            flags_.add(value);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * The flags to use when installing the MSI
           * defaults to ["/i"] (i.e. the install flag).
           * </pre>
           *
           * <code>repeated string flags = 2;</code>
           *
           * @param values The flags to add.
           * @return This builder for chaining.
           */
          public Builder addAllFlags(java.lang.Iterable<java.lang.String> values) {
            ensureFlagsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(values, flags_);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * The flags to use when installing the MSI
           * defaults to ["/i"] (i.e. the install flag).
           * </pre>
           *
           * <code>repeated string flags = 2;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearFlags() {
            flags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * The flags to use when installing the MSI
           * defaults to ["/i"] (i.e. the install flag).
           * </pre>
           *
           * <code>repeated string flags = 2;</code>
           *
           * @param value The bytes of the flags to add.
           * @return This builder for chaining.
           */
          public Builder addFlagsBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            ensureFlagsIsMutable();
            flags_.add(value);
            onChanged();
            return this;
          }

          private com.google.protobuf.Internal.IntList allowedExitCodes_ = emptyIntList();

          private void ensureAllowedExitCodesIsMutable() {
            if (!((bitField0_ & 0x00000004) != 0)) {
              allowedExitCodes_ = mutableCopy(allowedExitCodes_);
              bitField0_ |= 0x00000004;
            }
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 3;</code>
           *
           * @return A list containing the allowedExitCodes.
           */
          public java.util.List<java.lang.Integer> getAllowedExitCodesList() {
            return ((bitField0_ & 0x00000004) != 0)
                ? java.util.Collections.unmodifiableList(allowedExitCodes_)
                : allowedExitCodes_;
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 3;</code>
           *
           * @return The count of allowedExitCodes.
           */
          public int getAllowedExitCodesCount() {
            return allowedExitCodes_.size();
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 3;</code>
           *
           * @param index The index of the element to return.
           * @return The allowedExitCodes at the given index.
           */
          public int getAllowedExitCodes(int index) {
            return allowedExitCodes_.getInt(index);
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 3;</code>
           *
           * @param index The index to set the value at.
           * @param value The allowedExitCodes to set.
           * @return This builder for chaining.
           */
          public Builder setAllowedExitCodes(int index, int value) {

            ensureAllowedExitCodesIsMutable();
            allowedExitCodes_.setInt(index, value);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 3;</code>
           *
           * @param value The allowedExitCodes to add.
           * @return This builder for chaining.
           */
          public Builder addAllowedExitCodes(int value) {

            ensureAllowedExitCodesIsMutable();
            allowedExitCodes_.addInt(value);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 3;</code>
           *
           * @param values The allowedExitCodes to add.
           * @return This builder for chaining.
           */
          public Builder addAllAllowedExitCodes(
              java.lang.Iterable<? extends java.lang.Integer> values) {
            ensureAllowedExitCodesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(values, allowedExitCodes_);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 3;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearAllowedExitCodes() {
            allowedExitCodes_ = emptyIntList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
            return this;
          }

          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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

          // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi)
        }

        // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi)
        private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .InstallMsi
            DEFAULT_INSTANCE;

        static {
          DEFAULT_INSTANCE =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi();
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
      }

      public interface InstallDpkgOrBuilder
          extends
          // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg)
          com.google.protobuf.MessageOrBuilder {

        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The artifactId.
         */
        java.lang.String getArtifactId();
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for artifactId.
         */
        com.google.protobuf.ByteString getArtifactIdBytes();
      }
      /**
       *
       *
       * <pre>
       * Installs a deb via dpkg.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg}
       */
      public static final class InstallDpkg extends com.google.protobuf.GeneratedMessageV3
          implements
          // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg)
          InstallDpkgOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use InstallDpkg.newBuilder() to construct.
        private InstallDpkg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }

        private InstallDpkg() {
          artifactId_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
          return new InstallDpkg();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
          return this.unknownFields;
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallDpkg_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallDpkg_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                      .class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                      .Builder.class);
        }

        public static final int ARTIFACT_ID_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object artifactId_ = "";
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The artifactId.
         */
        @java.lang.Override
        public java.lang.String getArtifactId() {
          java.lang.Object ref = artifactId_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            artifactId_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for artifactId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getArtifactIdBytes() {
          java.lang.Object ref = artifactId_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            artifactId_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        private byte memoizedIsInitialized = -1;

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

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(artifactId_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, artifactId_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(artifactId_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, artifactId_);
          }
          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
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg)) {
            return super.equals(obj);
          }
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg other =
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg) obj;

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

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseFrom(java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseFrom(com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
          return newBuilder();
        }

        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                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.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         *
         *
         * <pre>
         * Installs a deb via dpkg.
         * </pre>
         *
         * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg}
         */
        public static final class Builder
            extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
            implements
            // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg)
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .InstallDpkgOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallDpkg_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallDpkg_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                        .class,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                        .Builder.class);
          }

          // Construct using
          // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg.newBuilder()
          private Builder() {}

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

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

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallDpkg_descriptor;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
              getDefaultInstanceForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                .getDefaultInstance();
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
              build() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg result =
                buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
              buildPartial() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg result =
                new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg(
                    this);
            if (bitField0_ != 0) {
              buildPartial0(result);
            }
            onBuilt();
            return result;
          }

          private void buildPartial0(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                  result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.artifactId_ = artifactId_;
            }
          }

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

          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.setField(field, value);
          }

          @java.lang.Override
          public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }

          @java.lang.Override
          public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }

          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index,
              java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }

          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other
                instanceof
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg) {
              return mergeFrom(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg)
                      other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                  other) {
            if (other
                == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                    .getDefaultInstance()) return this;
            if (!other.getArtifactId().isEmpty()) {
              artifactId_ = other.artifactId_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

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

          private int bitField0_;

          private java.lang.Object artifactId_ = "";
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The artifactId.
           */
          public java.lang.String getArtifactId() {
            java.lang.Object ref = artifactId_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              artifactId_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The bytes for artifactId.
           */
          public com.google.protobuf.ByteString getArtifactIdBytes() {
            java.lang.Object ref = artifactId_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              artifactId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactId(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            artifactId_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearArtifactId() {
            artifactId_ = getDefaultInstance().getArtifactId();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The bytes for artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactIdBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            artifactId_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }

          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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

          // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg)
        }

        // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg)
        private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .InstallDpkg
            DEFAULT_INSTANCE;

        static {
          DEFAULT_INSTANCE =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg();
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
      }

      public interface InstallRpmOrBuilder
          extends
          // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm)
          com.google.protobuf.MessageOrBuilder {

        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The artifactId.
         */
        java.lang.String getArtifactId();
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for artifactId.
         */
        com.google.protobuf.ByteString getArtifactIdBytes();
      }
      /**
       *
       *
       * <pre>
       * Installs an rpm file via the rpm utility.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm}
       */
      public static final class InstallRpm extends com.google.protobuf.GeneratedMessageV3
          implements
          // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm)
          InstallRpmOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use InstallRpm.newBuilder() to construct.
        private InstallRpm(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }

        private InstallRpm() {
          artifactId_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
          return new InstallRpm();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
          return this.unknownFields;
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallRpm_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallRpm_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                      .class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                      .Builder.class);
        }

        public static final int ARTIFACT_ID_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object artifactId_ = "";
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The artifactId.
         */
        @java.lang.Override
        public java.lang.String getArtifactId() {
          java.lang.Object ref = artifactId_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            artifactId_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Required. The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for artifactId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getArtifactIdBytes() {
          java.lang.Object ref = artifactId_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            artifactId_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        private byte memoizedIsInitialized = -1;

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

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(artifactId_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, artifactId_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(artifactId_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, artifactId_);
          }
          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
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm)) {
            return super.equals(obj);
          }
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm other =
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm) obj;

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

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseFrom(java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseFrom(com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
          return newBuilder();
        }

        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                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.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         *
         *
         * <pre>
         * Installs an rpm file via the rpm utility.
         * </pre>
         *
         * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm}
         */
        public static final class Builder
            extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
            implements
            // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm)
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpmOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallRpm_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallRpm_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                        .class,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                        .Builder.class);
          }

          // Construct using
          // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm.newBuilder()
          private Builder() {}

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

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

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallRpm_descriptor;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
              getDefaultInstanceForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                .getDefaultInstance();
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
              build() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm result =
                buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
              buildPartial() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm result =
                new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm(
                    this);
            if (bitField0_ != 0) {
              buildPartial0(result);
            }
            onBuilt();
            return result;
          }

          private void buildPartial0(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                  result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.artifactId_ = artifactId_;
            }
          }

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

          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.setField(field, value);
          }

          @java.lang.Override
          public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }

          @java.lang.Override
          public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }

          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index,
              java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }

          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other
                instanceof
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm) {
              return mergeFrom(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm)
                      other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm other) {
            if (other
                == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                    .getDefaultInstance()) return this;
            if (!other.getArtifactId().isEmpty()) {
              artifactId_ = other.artifactId_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

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

          private int bitField0_;

          private java.lang.Object artifactId_ = "";
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The artifactId.
           */
          public java.lang.String getArtifactId() {
            java.lang.Object ref = artifactId_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              artifactId_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The bytes for artifactId.
           */
          public com.google.protobuf.ByteString getArtifactIdBytes() {
            java.lang.Object ref = artifactId_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              artifactId_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactId(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            artifactId_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearArtifactId() {
            artifactId_ = getDefaultInstance().getArtifactId();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The bytes for artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactIdBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            artifactId_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }

          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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

          // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm)
        }

        // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm)
        private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .InstallRpm
            DEFAULT_INSTANCE;

        static {
          DEFAULT_INSTANCE =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm();
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
      }

      public interface ExecFileOrBuilder
          extends
          // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile)
          com.google.protobuf.MessageOrBuilder {

        /**
         *
         *
         * <pre>
         * The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1;</code>
         *
         * @return Whether the artifactId field is set.
         */
        boolean hasArtifactId();
        /**
         *
         *
         * <pre>
         * The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1;</code>
         *
         * @return The artifactId.
         */
        java.lang.String getArtifactId();
        /**
         *
         *
         * <pre>
         * The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1;</code>
         *
         * @return The bytes for artifactId.
         */
        com.google.protobuf.ByteString getArtifactIdBytes();

        /**
         *
         *
         * <pre>
         * The absolute path of the file on the local filesystem.
         * </pre>
         *
         * <code>string local_path = 2;</code>
         *
         * @return Whether the localPath field is set.
         */
        boolean hasLocalPath();
        /**
         *
         *
         * <pre>
         * The absolute path of the file on the local filesystem.
         * </pre>
         *
         * <code>string local_path = 2;</code>
         *
         * @return The localPath.
         */
        java.lang.String getLocalPath();
        /**
         *
         *
         * <pre>
         * The absolute path of the file on the local filesystem.
         * </pre>
         *
         * <code>string local_path = 2;</code>
         *
         * @return The bytes for localPath.
         */
        com.google.protobuf.ByteString getLocalPathBytes();

        /**
         *
         *
         * <pre>
         * Arguments to be passed to the provided executable.
         * </pre>
         *
         * <code>repeated string args = 3;</code>
         *
         * @return A list containing the args.
         */
        java.util.List<java.lang.String> getArgsList();
        /**
         *
         *
         * <pre>
         * Arguments to be passed to the provided executable.
         * </pre>
         *
         * <code>repeated string args = 3;</code>
         *
         * @return The count of args.
         */
        int getArgsCount();
        /**
         *
         *
         * <pre>
         * Arguments to be passed to the provided executable.
         * </pre>
         *
         * <code>repeated string args = 3;</code>
         *
         * @param index The index of the element to return.
         * @return The args at the given index.
         */
        java.lang.String getArgs(int index);
        /**
         *
         *
         * <pre>
         * Arguments to be passed to the provided executable.
         * </pre>
         *
         * <code>repeated string args = 3;</code>
         *
         * @param index The index of the value to return.
         * @return The bytes of the args at the given index.
         */
        com.google.protobuf.ByteString getArgsBytes(int index);

        /**
         *
         *
         * <pre>
         * Defaults to [0]. A list of possible return values that the program
         * can return to indicate a success.
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 4;</code>
         *
         * @return A list containing the allowedExitCodes.
         */
        java.util.List<java.lang.Integer> getAllowedExitCodesList();
        /**
         *
         *
         * <pre>
         * Defaults to [0]. A list of possible return values that the program
         * can return to indicate a success.
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 4;</code>
         *
         * @return The count of allowedExitCodes.
         */
        int getAllowedExitCodesCount();
        /**
         *
         *
         * <pre>
         * Defaults to [0]. A list of possible return values that the program
         * can return to indicate a success.
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 4;</code>
         *
         * @param index The index of the element to return.
         * @return The allowedExitCodes at the given index.
         */
        int getAllowedExitCodes(int index);

        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                .LocationTypeCase
            getLocationTypeCase();
      }
      /**
       *
       *
       * <pre>
       * Executes an artifact or local file.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile}
       */
      public static final class ExecFile extends com.google.protobuf.GeneratedMessageV3
          implements
          // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile)
          ExecFileOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use ExecFile.newBuilder() to construct.
        private ExecFile(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }

        private ExecFile() {
          args_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          allowedExitCodes_ = emptyIntList();
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
          return new ExecFile();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
          return this.unknownFields;
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExecFile_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExecFile_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile.class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                      .Builder.class);
        }

        private int locationTypeCase_ = 0;
        private java.lang.Object locationType_;

        public enum LocationTypeCase
            implements
                com.google.protobuf.Internal.EnumLite,
                com.google.protobuf.AbstractMessage.InternalOneOfEnum {
          ARTIFACT_ID(1),
          LOCAL_PATH(2),
          LOCATIONTYPE_NOT_SET(0);
          private final int value;

          private LocationTypeCase(int value) {
            this.value = value;
          }
          /**
           * @param value The number of the enum to look for.
           * @return The enum associated with the given number.
           * @deprecated Use {@link #forNumber(int)} instead.
           */
          @java.lang.Deprecated
          public static LocationTypeCase valueOf(int value) {
            return forNumber(value);
          }

          public static LocationTypeCase forNumber(int value) {
            switch (value) {
              case 1:
                return ARTIFACT_ID;
              case 2:
                return LOCAL_PATH;
              case 0:
                return LOCATIONTYPE_NOT_SET;
              default:
                return null;
            }
          }

          public int getNumber() {
            return this.value;
          }
        };

        public LocationTypeCase getLocationTypeCase() {
          return LocationTypeCase.forNumber(locationTypeCase_);
        }

        public static final int ARTIFACT_ID_FIELD_NUMBER = 1;
        /**
         *
         *
         * <pre>
         * The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1;</code>
         *
         * @return Whether the artifactId field is set.
         */
        public boolean hasArtifactId() {
          return locationTypeCase_ == 1;
        }
        /**
         *
         *
         * <pre>
         * The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1;</code>
         *
         * @return The artifactId.
         */
        public java.lang.String getArtifactId() {
          java.lang.Object ref = "";
          if (locationTypeCase_ == 1) {
            ref = locationType_;
          }
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (locationTypeCase_ == 1) {
              locationType_ = s;
            }
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * The id of the relevant artifact in the recipe.
         * </pre>
         *
         * <code>string artifact_id = 1;</code>
         *
         * @return The bytes for artifactId.
         */
        public com.google.protobuf.ByteString getArtifactIdBytes() {
          java.lang.Object ref = "";
          if (locationTypeCase_ == 1) {
            ref = locationType_;
          }
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            if (locationTypeCase_ == 1) {
              locationType_ = b;
            }
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int LOCAL_PATH_FIELD_NUMBER = 2;
        /**
         *
         *
         * <pre>
         * The absolute path of the file on the local filesystem.
         * </pre>
         *
         * <code>string local_path = 2;</code>
         *
         * @return Whether the localPath field is set.
         */
        public boolean hasLocalPath() {
          return locationTypeCase_ == 2;
        }
        /**
         *
         *
         * <pre>
         * The absolute path of the file on the local filesystem.
         * </pre>
         *
         * <code>string local_path = 2;</code>
         *
         * @return The localPath.
         */
        public java.lang.String getLocalPath() {
          java.lang.Object ref = "";
          if (locationTypeCase_ == 2) {
            ref = locationType_;
          }
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (locationTypeCase_ == 2) {
              locationType_ = s;
            }
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * The absolute path of the file on the local filesystem.
         * </pre>
         *
         * <code>string local_path = 2;</code>
         *
         * @return The bytes for localPath.
         */
        public com.google.protobuf.ByteString getLocalPathBytes() {
          java.lang.Object ref = "";
          if (locationTypeCase_ == 2) {
            ref = locationType_;
          }
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            if (locationTypeCase_ == 2) {
              locationType_ = b;
            }
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int ARGS_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private com.google.protobuf.LazyStringList args_;
        /**
         *
         *
         * <pre>
         * Arguments to be passed to the provided executable.
         * </pre>
         *
         * <code>repeated string args = 3;</code>
         *
         * @return A list containing the args.
         */
        public com.google.protobuf.ProtocolStringList getArgsList() {
          return args_;
        }
        /**
         *
         *
         * <pre>
         * Arguments to be passed to the provided executable.
         * </pre>
         *
         * <code>repeated string args = 3;</code>
         *
         * @return The count of args.
         */
        public int getArgsCount() {
          return args_.size();
        }
        /**
         *
         *
         * <pre>
         * Arguments to be passed to the provided executable.
         * </pre>
         *
         * <code>repeated string args = 3;</code>
         *
         * @param index The index of the element to return.
         * @return The args at the given index.
         */
        public java.lang.String getArgs(int index) {
          return args_.get(index);
        }
        /**
         *
         *
         * <pre>
         * Arguments to be passed to the provided executable.
         * </pre>
         *
         * <code>repeated string args = 3;</code>
         *
         * @param index The index of the value to return.
         * @return The bytes of the args at the given index.
         */
        public com.google.protobuf.ByteString getArgsBytes(int index) {
          return args_.getByteString(index);
        }

        public static final int ALLOWED_EXIT_CODES_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private com.google.protobuf.Internal.IntList allowedExitCodes_;
        /**
         *
         *
         * <pre>
         * Defaults to [0]. A list of possible return values that the program
         * can return to indicate a success.
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 4;</code>
         *
         * @return A list containing the allowedExitCodes.
         */
        @java.lang.Override
        public java.util.List<java.lang.Integer> getAllowedExitCodesList() {
          return allowedExitCodes_;
        }
        /**
         *
         *
         * <pre>
         * Defaults to [0]. A list of possible return values that the program
         * can return to indicate a success.
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 4;</code>
         *
         * @return The count of allowedExitCodes.
         */
        public int getAllowedExitCodesCount() {
          return allowedExitCodes_.size();
        }
        /**
         *
         *
         * <pre>
         * Defaults to [0]. A list of possible return values that the program
         * can return to indicate a success.
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 4;</code>
         *
         * @param index The index of the element to return.
         * @return The allowedExitCodes at the given index.
         */
        public int getAllowedExitCodes(int index) {
          return allowedExitCodes_.getInt(index);
        }

        private int allowedExitCodesMemoizedSerializedSize = -1;

        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 {
          getSerializedSize();
          if (locationTypeCase_ == 1) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, locationType_);
          }
          if (locationTypeCase_ == 2) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 2, locationType_);
          }
          for (int i = 0; i < args_.size(); i++) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 3, args_.getRaw(i));
          }
          if (getAllowedExitCodesList().size() > 0) {
            output.writeUInt32NoTag(34);
            output.writeUInt32NoTag(allowedExitCodesMemoizedSerializedSize);
          }
          for (int i = 0; i < allowedExitCodes_.size(); i++) {
            output.writeInt32NoTag(allowedExitCodes_.getInt(i));
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (locationTypeCase_ == 1) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, locationType_);
          }
          if (locationTypeCase_ == 2) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, locationType_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < args_.size(); i++) {
              dataSize += computeStringSizeNoTag(args_.getRaw(i));
            }
            size += dataSize;
            size += 1 * getArgsList().size();
          }
          {
            int dataSize = 0;
            for (int i = 0; i < allowedExitCodes_.size(); i++) {
              dataSize +=
                  com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(
                      allowedExitCodes_.getInt(i));
            }
            size += dataSize;
            if (!getAllowedExitCodesList().isEmpty()) {
              size += 1;
              size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
            }
            allowedExitCodesMemoizedSerializedSize = dataSize;
          }
          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
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile)) {
            return super.equals(obj);
          }
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile other =
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile) obj;

          if (!getArgsList().equals(other.getArgsList())) return false;
          if (!getAllowedExitCodesList().equals(other.getAllowedExitCodesList())) return false;
          if (!getLocationTypeCase().equals(other.getLocationTypeCase())) return false;
          switch (locationTypeCase_) {
            case 1:
              if (!getArtifactId().equals(other.getArtifactId())) return false;
              break;
            case 2:
              if (!getLocalPath().equals(other.getLocalPath())) return false;
              break;
            case 0:
            default:
          }
          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 (getArgsCount() > 0) {
            hash = (37 * hash) + ARGS_FIELD_NUMBER;
            hash = (53 * hash) + getArgsList().hashCode();
          }
          if (getAllowedExitCodesCount() > 0) {
            hash = (37 * hash) + ALLOWED_EXIT_CODES_FIELD_NUMBER;
            hash = (53 * hash) + getAllowedExitCodesList().hashCode();
          }
          switch (locationTypeCase_) {
            case 1:
              hash = (37 * hash) + ARTIFACT_ID_FIELD_NUMBER;
              hash = (53 * hash) + getArtifactId().hashCode();
              break;
            case 2:
              hash = (37 * hash) + LOCAL_PATH_FIELD_NUMBER;
              hash = (53 * hash) + getLocalPath().hashCode();
              break;
            case 0:
            default:
          }
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseFrom(java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseFrom(com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
          return newBuilder();
        }

        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile 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.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         *
         *
         * <pre>
         * Executes an artifact or local file.
         * </pre>
         *
         * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile}
         */
        public static final class Builder
            extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
            implements
            // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile)
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFileOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExecFile_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExecFile_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                        .class,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                        .Builder.class);
          }

          // Construct using
          // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile.newBuilder()
          private Builder() {}

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

          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            args_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000004);
            allowedExitCodes_ = emptyIntList();
            locationTypeCase_ = 0;
            locationType_ = null;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExecFile_descriptor;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
              getDefaultInstanceForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                .getDefaultInstance();
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
              build() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile result =
                buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
              buildPartial() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile result =
                new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile(
                    this);
            buildPartialRepeatedFields(result);
            if (bitField0_ != 0) {
              buildPartial0(result);
            }
            buildPartialOneofs(result);
            onBuilt();
            return result;
          }

          private void buildPartialRepeatedFields(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile result) {
            if (((bitField0_ & 0x00000004) != 0)) {
              args_ = args_.getUnmodifiableView();
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.args_ = args_;
            if (((bitField0_ & 0x00000008) != 0)) {
              allowedExitCodes_.makeImmutable();
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.allowedExitCodes_ = allowedExitCodes_;
          }

          private void buildPartial0(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile result) {
            int from_bitField0_ = bitField0_;
          }

          private void buildPartialOneofs(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile result) {
            result.locationTypeCase_ = locationTypeCase_;
            result.locationType_ = this.locationType_;
          }

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

          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.setField(field, value);
          }

          @java.lang.Override
          public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }

          @java.lang.Override
          public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }

          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index,
              java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }

          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other
                instanceof
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile) {
              return mergeFrom(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile)
                      other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile other) {
            if (other
                == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                    .getDefaultInstance()) return this;
            if (!other.args_.isEmpty()) {
              if (args_.isEmpty()) {
                args_ = other.args_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureArgsIsMutable();
                args_.addAll(other.args_);
              }
              onChanged();
            }
            if (!other.allowedExitCodes_.isEmpty()) {
              if (allowedExitCodes_.isEmpty()) {
                allowedExitCodes_ = other.allowedExitCodes_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureAllowedExitCodesIsMutable();
                allowedExitCodes_.addAll(other.allowedExitCodes_);
              }
              onChanged();
            }
            switch (other.getLocationTypeCase()) {
              case ARTIFACT_ID:
                {
                  locationTypeCase_ = 1;
                  locationType_ = other.locationType_;
                  onChanged();
                  break;
                }
              case LOCAL_PATH:
                {
                  locationTypeCase_ = 2;
                  locationType_ = other.locationType_;
                  onChanged();
                  break;
                }
              case LOCATIONTYPE_NOT_SET:
                {
                  break;
                }
            }
            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:
                    {
                      java.lang.String s = input.readStringRequireUtf8();
                      locationTypeCase_ = 1;
                      locationType_ = s;
                      break;
                    } // case 10
                  case 18:
                    {
                      java.lang.String s = input.readStringRequireUtf8();
                      locationTypeCase_ = 2;
                      locationType_ = s;
                      break;
                    } // case 18
                  case 26:
                    {
                      java.lang.String s = input.readStringRequireUtf8();
                      ensureArgsIsMutable();
                      args_.add(s);
                      break;
                    } // case 26
                  case 32:
                    {
                      int v = input.readInt32();
                      ensureAllowedExitCodesIsMutable();
                      allowedExitCodes_.addInt(v);
                      break;
                    } // case 32
                  case 34:
                    {
                      int length = input.readRawVarint32();
                      int limit = input.pushLimit(length);
                      ensureAllowedExitCodesIsMutable();
                      while (input.getBytesUntilLimit() > 0) {
                        allowedExitCodes_.addInt(input.readInt32());
                      }
                      input.popLimit(limit);
                      break;
                    } // case 34
                  default:
                    {
                      if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                        done = true; // was an endgroup tag
                      }
                      break;
                    } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }

          private int locationTypeCase_ = 0;
          private java.lang.Object locationType_;

          public LocationTypeCase getLocationTypeCase() {
            return LocationTypeCase.forNumber(locationTypeCase_);
          }

          public Builder clearLocationType() {
            locationTypeCase_ = 0;
            locationType_ = null;
            onChanged();
            return this;
          }

          private int bitField0_;

          /**
           *
           *
           * <pre>
           * The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1;</code>
           *
           * @return Whether the artifactId field is set.
           */
          @java.lang.Override
          public boolean hasArtifactId() {
            return locationTypeCase_ == 1;
          }
          /**
           *
           *
           * <pre>
           * The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1;</code>
           *
           * @return The artifactId.
           */
          @java.lang.Override
          public java.lang.String getArtifactId() {
            java.lang.Object ref = "";
            if (locationTypeCase_ == 1) {
              ref = locationType_;
            }
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (locationTypeCase_ == 1) {
                locationType_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1;</code>
           *
           * @return The bytes for artifactId.
           */
          @java.lang.Override
          public com.google.protobuf.ByteString getArtifactIdBytes() {
            java.lang.Object ref = "";
            if (locationTypeCase_ == 1) {
              ref = locationType_;
            }
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              if (locationTypeCase_ == 1) {
                locationType_ = b;
              }
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1;</code>
           *
           * @param value The artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactId(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            locationTypeCase_ = 1;
            locationType_ = value;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearArtifactId() {
            if (locationTypeCase_ == 1) {
              locationTypeCase_ = 0;
              locationType_ = null;
              onChanged();
            }
            return this;
          }
          /**
           *
           *
           * <pre>
           * The id of the relevant artifact in the recipe.
           * </pre>
           *
           * <code>string artifact_id = 1;</code>
           *
           * @param value The bytes for artifactId to set.
           * @return This builder for chaining.
           */
          public Builder setArtifactIdBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            locationTypeCase_ = 1;
            locationType_ = value;
            onChanged();
            return this;
          }

          /**
           *
           *
           * <pre>
           * The absolute path of the file on the local filesystem.
           * </pre>
           *
           * <code>string local_path = 2;</code>
           *
           * @return Whether the localPath field is set.
           */
          @java.lang.Override
          public boolean hasLocalPath() {
            return locationTypeCase_ == 2;
          }
          /**
           *
           *
           * <pre>
           * The absolute path of the file on the local filesystem.
           * </pre>
           *
           * <code>string local_path = 2;</code>
           *
           * @return The localPath.
           */
          @java.lang.Override
          public java.lang.String getLocalPath() {
            java.lang.Object ref = "";
            if (locationTypeCase_ == 2) {
              ref = locationType_;
            }
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (locationTypeCase_ == 2) {
                locationType_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * The absolute path of the file on the local filesystem.
           * </pre>
           *
           * <code>string local_path = 2;</code>
           *
           * @return The bytes for localPath.
           */
          @java.lang.Override
          public com.google.protobuf.ByteString getLocalPathBytes() {
            java.lang.Object ref = "";
            if (locationTypeCase_ == 2) {
              ref = locationType_;
            }
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              if (locationTypeCase_ == 2) {
                locationType_ = b;
              }
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * The absolute path of the file on the local filesystem.
           * </pre>
           *
           * <code>string local_path = 2;</code>
           *
           * @param value The localPath to set.
           * @return This builder for chaining.
           */
          public Builder setLocalPath(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            locationTypeCase_ = 2;
            locationType_ = value;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * The absolute path of the file on the local filesystem.
           * </pre>
           *
           * <code>string local_path = 2;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearLocalPath() {
            if (locationTypeCase_ == 2) {
              locationTypeCase_ = 0;
              locationType_ = null;
              onChanged();
            }
            return this;
          }
          /**
           *
           *
           * <pre>
           * The absolute path of the file on the local filesystem.
           * </pre>
           *
           * <code>string local_path = 2;</code>
           *
           * @param value The bytes for localPath to set.
           * @return This builder for chaining.
           */
          public Builder setLocalPathBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            locationTypeCase_ = 2;
            locationType_ = value;
            onChanged();
            return this;
          }

          private com.google.protobuf.LazyStringList args_ =
              com.google.protobuf.LazyStringArrayList.EMPTY;

          private void ensureArgsIsMutable() {
            if (!((bitField0_ & 0x00000004) != 0)) {
              args_ = new com.google.protobuf.LazyStringArrayList(args_);
              bitField0_ |= 0x00000004;
            }
          }
          /**
           *
           *
           * <pre>
           * Arguments to be passed to the provided executable.
           * </pre>
           *
           * <code>repeated string args = 3;</code>
           *
           * @return A list containing the args.
           */
          public com.google.protobuf.ProtocolStringList getArgsList() {
            return args_.getUnmodifiableView();
          }
          /**
           *
           *
           * <pre>
           * Arguments to be passed to the provided executable.
           * </pre>
           *
           * <code>repeated string args = 3;</code>
           *
           * @return The count of args.
           */
          public int getArgsCount() {
            return args_.size();
          }
          /**
           *
           *
           * <pre>
           * Arguments to be passed to the provided executable.
           * </pre>
           *
           * <code>repeated string args = 3;</code>
           *
           * @param index The index of the element to return.
           * @return The args at the given index.
           */
          public java.lang.String getArgs(int index) {
            return args_.get(index);
          }
          /**
           *
           *
           * <pre>
           * Arguments to be passed to the provided executable.
           * </pre>
           *
           * <code>repeated string args = 3;</code>
           *
           * @param index The index of the value to return.
           * @return The bytes of the args at the given index.
           */
          public com.google.protobuf.ByteString getArgsBytes(int index) {
            return args_.getByteString(index);
          }
          /**
           *
           *
           * <pre>
           * Arguments to be passed to the provided executable.
           * </pre>
           *
           * <code>repeated string args = 3;</code>
           *
           * @param index The index to set the value at.
           * @param value The args to set.
           * @return This builder for chaining.
           */
          public Builder setArgs(int index, java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.set(index, value);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Arguments to be passed to the provided executable.
           * </pre>
           *
           * <code>repeated string args = 3;</code>
           *
           * @param value The args to add.
           * @return This builder for chaining.
           */
          public Builder addArgs(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.add(value);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Arguments to be passed to the provided executable.
           * </pre>
           *
           * <code>repeated string args = 3;</code>
           *
           * @param values The args to add.
           * @return This builder for chaining.
           */
          public Builder addAllArgs(java.lang.Iterable<java.lang.String> values) {
            ensureArgsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(values, args_);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Arguments to be passed to the provided executable.
           * </pre>
           *
           * <code>repeated string args = 3;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearArgs() {
            args_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Arguments to be passed to the provided executable.
           * </pre>
           *
           * <code>repeated string args = 3;</code>
           *
           * @param value The bytes of the args to add.
           * @return This builder for chaining.
           */
          public Builder addArgsBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            ensureArgsIsMutable();
            args_.add(value);
            onChanged();
            return this;
          }

          private com.google.protobuf.Internal.IntList allowedExitCodes_ = emptyIntList();

          private void ensureAllowedExitCodesIsMutable() {
            if (!((bitField0_ & 0x00000008) != 0)) {
              allowedExitCodes_ = mutableCopy(allowedExitCodes_);
              bitField0_ |= 0x00000008;
            }
          }
          /**
           *
           *
           * <pre>
           * Defaults to [0]. A list of possible return values that the program
           * can return to indicate a success.
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 4;</code>
           *
           * @return A list containing the allowedExitCodes.
           */
          public java.util.List<java.lang.Integer> getAllowedExitCodesList() {
            return ((bitField0_ & 0x00000008) != 0)
                ? java.util.Collections.unmodifiableList(allowedExitCodes_)
                : allowedExitCodes_;
          }
          /**
           *
           *
           * <pre>
           * Defaults to [0]. A list of possible return values that the program
           * can return to indicate a success.
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 4;</code>
           *
           * @return The count of allowedExitCodes.
           */
          public int getAllowedExitCodesCount() {
            return allowedExitCodes_.size();
          }
          /**
           *
           *
           * <pre>
           * Defaults to [0]. A list of possible return values that the program
           * can return to indicate a success.
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 4;</code>
           *
           * @param index The index of the element to return.
           * @return The allowedExitCodes at the given index.
           */
          public int getAllowedExitCodes(int index) {
            return allowedExitCodes_.getInt(index);
          }
          /**
           *
           *
           * <pre>
           * Defaults to [0]. A list of possible return values that the program
           * can return to indicate a success.
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 4;</code>
           *
           * @param index The index to set the value at.
           * @param value The allowedExitCodes to set.
           * @return This builder for chaining.
           */
          public Builder setAllowedExitCodes(int index, int value) {

            ensureAllowedExitCodesIsMutable();
            allowedExitCodes_.setInt(index, value);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Defaults to [0]. A list of possible return values that the program
           * can return to indicate a success.
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 4;</code>
           *
           * @param value The allowedExitCodes to add.
           * @return This builder for chaining.
           */
          public Builder addAllowedExitCodes(int value) {

            ensureAllowedExitCodesIsMutable();
            allowedExitCodes_.addInt(value);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Defaults to [0]. A list of possible return values that the program
           * can return to indicate a success.
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 4;</code>
           *
           * @param values The allowedExitCodes to add.
           * @return This builder for chaining.
           */
          public Builder addAllAllowedExitCodes(
              java.lang.Iterable<? extends java.lang.Integer> values) {
            ensureAllowedExitCodesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(values, allowedExitCodes_);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Defaults to [0]. A list of possible return values that the program
           * can return to indicate a success.
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 4;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearAllowedExitCodes() {
            allowedExitCodes_ = emptyIntList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
            return this;
          }

          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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

          // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile)
        }

        // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile)
        private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExecFile
            DEFAULT_INSTANCE;

        static {
          DEFAULT_INSTANCE =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile();
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
      }

      public interface RunScriptOrBuilder
          extends
          // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript)
          com.google.protobuf.MessageOrBuilder {

        /**
         *
         *
         * <pre>
         * Required. The shell script to be executed.
         * </pre>
         *
         * <code>string script = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The script.
         */
        java.lang.String getScript();
        /**
         *
         *
         * <pre>
         * Required. The shell script to be executed.
         * </pre>
         *
         * <code>string script = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for script.
         */
        com.google.protobuf.ByteString getScriptBytes();

        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 2;</code>
         *
         * @return A list containing the allowedExitCodes.
         */
        java.util.List<java.lang.Integer> getAllowedExitCodesList();
        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 2;</code>
         *
         * @return The count of allowedExitCodes.
         */
        int getAllowedExitCodesCount();
        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 2;</code>
         *
         * @param index The index of the element to return.
         * @return The allowedExitCodes at the given index.
         */
        int getAllowedExitCodes(int index);

        /**
         *
         *
         * <pre>
         * The script interpreter to use to run the script. If no interpreter is
         * specified the script is executed directly, which likely
         * only succeed for scripts with
         * [shebang lines](https://en.wikipedia.org/wiki/Shebang_&#92;(Unix&#92;)).
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter interpreter = 3;
         * </code>
         *
         * @return The enum numeric value on the wire for interpreter.
         */
        int getInterpreterValue();
        /**
         *
         *
         * <pre>
         * The script interpreter to use to run the script. If no interpreter is
         * specified the script is executed directly, which likely
         * only succeed for scripts with
         * [shebang lines](https://en.wikipedia.org/wiki/Shebang_&#92;(Unix&#92;)).
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter interpreter = 3;
         * </code>
         *
         * @return The interpreter.
         */
        com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript.Interpreter
            getInterpreter();
      }
      /**
       *
       *
       * <pre>
       * Runs a script through an interpreter.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript}
       */
      public static final class RunScript extends com.google.protobuf.GeneratedMessageV3
          implements
          // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript)
          RunScriptOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use RunScript.newBuilder() to construct.
        private RunScript(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }

        private RunScript() {
          script_ = "";
          allowedExitCodes_ = emptyIntList();
          interpreter_ = 0;
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
          return new RunScript();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
          return this.unknownFields;
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_RunScript_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_RunScript_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                      .class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                      .Builder.class);
        }

        /**
         *
         *
         * <pre>
         * The interpreter used to execute a script.
         * </pre>
         *
         * Protobuf enum {@code
         * google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter}
         */
        public enum Interpreter implements com.google.protobuf.ProtocolMessageEnum {
          /**
           *
           *
           * <pre>
           * Default value for ScriptType.
           * </pre>
           *
           * <code>INTERPRETER_UNSPECIFIED = 0;</code>
           */
          INTERPRETER_UNSPECIFIED(0),
          /**
           *
           *
           * <pre>
           * Indicates that the script is run with `/bin/sh` on Linux and `cmd`
           * on windows.
           * </pre>
           *
           * <code>SHELL = 1;</code>
           */
          SHELL(1),
          /**
           *
           *
           * <pre>
           * Indicates that the script is run with powershell.
           * </pre>
           *
           * <code>POWERSHELL = 3;</code>
           */
          POWERSHELL(3),
          UNRECOGNIZED(-1),
          ;

          /**
           *
           *
           * <pre>
           * Default value for ScriptType.
           * </pre>
           *
           * <code>INTERPRETER_UNSPECIFIED = 0;</code>
           */
          public static final int INTERPRETER_UNSPECIFIED_VALUE = 0;
          /**
           *
           *
           * <pre>
           * Indicates that the script is run with `/bin/sh` on Linux and `cmd`
           * on windows.
           * </pre>
           *
           * <code>SHELL = 1;</code>
           */
          public static final int SHELL_VALUE = 1;
          /**
           *
           *
           * <pre>
           * Indicates that the script is run with powershell.
           * </pre>
           *
           * <code>POWERSHELL = 3;</code>
           */
          public static final int POWERSHELL_VALUE = 3;

          public final int getNumber() {
            if (this == UNRECOGNIZED) {
              throw new java.lang.IllegalArgumentException(
                  "Can't get the number of an unknown enum value.");
            }
            return value;
          }

          /**
           * @param value The numeric wire value of the corresponding enum entry.
           * @return The enum associated with the given numeric wire value.
           * @deprecated Use {@link #forNumber(int)} instead.
           */
          @java.lang.Deprecated
          public static Interpreter valueOf(int value) {
            return forNumber(value);
          }

          /**
           * @param value The numeric wire value of the corresponding enum entry.
           * @return The enum associated with the given numeric wire value.
           */
          public static Interpreter forNumber(int value) {
            switch (value) {
              case 0:
                return INTERPRETER_UNSPECIFIED;
              case 1:
                return SHELL;
              case 3:
                return POWERSHELL;
              default:
                return null;
            }
          }

          public static com.google.protobuf.Internal.EnumLiteMap<Interpreter>
              internalGetValueMap() {
            return internalValueMap;
          }

          private static final com.google.protobuf.Internal.EnumLiteMap<Interpreter>
              internalValueMap =
                  new com.google.protobuf.Internal.EnumLiteMap<Interpreter>() {
                    public Interpreter findValueByNumber(int number) {
                      return Interpreter.forNumber(number);
                    }
                  };

          public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
              throw new java.lang.IllegalStateException(
                  "Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
          }

          public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
          }

          public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                .getDescriptor()
                .getEnumTypes()
                .get(0);
          }

          private static final Interpreter[] VALUES = values();

          public static Interpreter valueOf(
              com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
              throw new java.lang.IllegalArgumentException(
                  "EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
              return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
          }

          private final int value;

          private Interpreter(int value) {
            this.value = value;
          }

          // @@protoc_insertion_point(enum_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter)
        }

        public static final int SCRIPT_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object script_ = "";
        /**
         *
         *
         * <pre>
         * Required. The shell script to be executed.
         * </pre>
         *
         * <code>string script = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The script.
         */
        @java.lang.Override
        public java.lang.String getScript() {
          java.lang.Object ref = script_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            script_ = s;
            return s;
          }
        }
        /**
         *
         *
         * <pre>
         * Required. The shell script to be executed.
         * </pre>
         *
         * <code>string script = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         *
         * @return The bytes for script.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getScriptBytes() {
          java.lang.Object ref = script_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            script_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int ALLOWED_EXIT_CODES_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private com.google.protobuf.Internal.IntList allowedExitCodes_;
        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 2;</code>
         *
         * @return A list containing the allowedExitCodes.
         */
        @java.lang.Override
        public java.util.List<java.lang.Integer> getAllowedExitCodesList() {
          return allowedExitCodes_;
        }
        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 2;</code>
         *
         * @return The count of allowedExitCodes.
         */
        public int getAllowedExitCodesCount() {
          return allowedExitCodes_.size();
        }
        /**
         *
         *
         * <pre>
         * Return codes that indicate that the software installed or updated
         * successfully. Behaviour defaults to [0]
         * </pre>
         *
         * <code>repeated int32 allowed_exit_codes = 2;</code>
         *
         * @param index The index of the element to return.
         * @return The allowedExitCodes at the given index.
         */
        public int getAllowedExitCodes(int index) {
          return allowedExitCodes_.getInt(index);
        }

        private int allowedExitCodesMemoizedSerializedSize = -1;

        public static final int INTERPRETER_FIELD_NUMBER = 3;
        private int interpreter_ = 0;
        /**
         *
         *
         * <pre>
         * The script interpreter to use to run the script. If no interpreter is
         * specified the script is executed directly, which likely
         * only succeed for scripts with
         * [shebang lines](https://en.wikipedia.org/wiki/Shebang_&#92;(Unix&#92;)).
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter interpreter = 3;
         * </code>
         *
         * @return The enum numeric value on the wire for interpreter.
         */
        @java.lang.Override
        public int getInterpreterValue() {
          return interpreter_;
        }
        /**
         *
         *
         * <pre>
         * The script interpreter to use to run the script. If no interpreter is
         * specified the script is executed directly, which likely
         * only succeed for scripts with
         * [shebang lines](https://en.wikipedia.org/wiki/Shebang_&#92;(Unix&#92;)).
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter interpreter = 3;
         * </code>
         *
         * @return The interpreter.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                .Interpreter
            getInterpreter() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript.Interpreter
              result =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                      .Interpreter.forNumber(interpreter_);
          return result == null
              ? com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                  .Interpreter.UNRECOGNIZED
              : result;
        }

        private byte memoizedIsInitialized = -1;

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

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
            throws java.io.IOException {
          getSerializedSize();
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(script_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, script_);
          }
          if (getAllowedExitCodesList().size() > 0) {
            output.writeUInt32NoTag(18);
            output.writeUInt32NoTag(allowedExitCodesMemoizedSerializedSize);
          }
          for (int i = 0; i < allowedExitCodes_.size(); i++) {
            output.writeInt32NoTag(allowedExitCodes_.getInt(i));
          }
          if (interpreter_
              != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                  .Interpreter.INTERPRETER_UNSPECIFIED
                  .getNumber()) {
            output.writeEnum(3, interpreter_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(script_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, script_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < allowedExitCodes_.size(); i++) {
              dataSize +=
                  com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(
                      allowedExitCodes_.getInt(i));
            }
            size += dataSize;
            if (!getAllowedExitCodesList().isEmpty()) {
              size += 1;
              size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize);
            }
            allowedExitCodesMemoizedSerializedSize = dataSize;
          }
          if (interpreter_
              != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                  .Interpreter.INTERPRETER_UNSPECIFIED
                  .getNumber()) {
            size += com.google.protobuf.CodedOutputStream.computeEnumSize(3, interpreter_);
          }
          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
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript)) {
            return super.equals(obj);
          }
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript other =
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript) obj;

          if (!getScript().equals(other.getScript())) return false;
          if (!getAllowedExitCodesList().equals(other.getAllowedExitCodesList())) return false;
          if (interpreter_ != other.interpreter_) 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();
          hash = (37 * hash) + SCRIPT_FIELD_NUMBER;
          hash = (53 * hash) + getScript().hashCode();
          if (getAllowedExitCodesCount() > 0) {
            hash = (37 * hash) + ALLOWED_EXIT_CODES_FIELD_NUMBER;
            hash = (53 * hash) + getAllowedExitCodesList().hashCode();
          }
          hash = (37 * hash) + INTERPRETER_FIELD_NUMBER;
          hash = (53 * hash) + interpreter_;
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseFrom(java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseFrom(com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
              PARSER, input, extensionRegistry);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            parseFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
              PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
          return newBuilder();
        }

        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                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.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         *
         *
         * <pre>
         * Runs a script through an interpreter.
         * </pre>
         *
         * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript}
         */
        public static final class Builder
            extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
            implements
            // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript)
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScriptOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_RunScript_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_RunScript_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                        .class,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                        .Builder.class);
          }

          // Construct using
          // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript.newBuilder()
          private Builder() {}

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

          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            script_ = "";
            allowedExitCodes_ = emptyIntList();
            interpreter_ = 0;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies
                .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_RunScript_descriptor;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
              getDefaultInstanceForType() {
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                .getDefaultInstance();
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
              build() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript result =
                buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
              buildPartial() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript result =
                new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript(
                    this);
            buildPartialRepeatedFields(result);
            if (bitField0_ != 0) {
              buildPartial0(result);
            }
            onBuilt();
            return result;
          }

          private void buildPartialRepeatedFields(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript result) {
            if (((bitField0_ & 0x00000002) != 0)) {
              allowedExitCodes_.makeImmutable();
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.allowedExitCodes_ = allowedExitCodes_;
          }

          private void buildPartial0(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.script_ = script_;
            }
            if (((from_bitField0_ & 0x00000004) != 0)) {
              result.interpreter_ = interpreter_;
            }
          }

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

          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.setField(field, value);
          }

          @java.lang.Override
          public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }

          @java.lang.Override
          public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }

          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index,
              java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }

          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other
                instanceof
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript) {
              return mergeFrom(
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript)
                      other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript other) {
            if (other
                == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                    .getDefaultInstance()) return this;
            if (!other.getScript().isEmpty()) {
              script_ = other.script_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            if (!other.allowedExitCodes_.isEmpty()) {
              if (allowedExitCodes_.isEmpty()) {
                allowedExitCodes_ = other.allowedExitCodes_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureAllowedExitCodesIsMutable();
                allowedExitCodes_.addAll(other.allowedExitCodes_);
              }
              onChanged();
            }
            if (other.interpreter_ != 0) {
              setInterpreterValue(other.getInterpreterValue());
            }
            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:
                    {
                      script_ = input.readStringRequireUtf8();
                      bitField0_ |= 0x00000001;
                      break;
                    } // case 10
                  case 16:
                    {
                      int v = input.readInt32();
                      ensureAllowedExitCodesIsMutable();
                      allowedExitCodes_.addInt(v);
                      break;
                    } // case 16
                  case 18:
                    {
                      int length = input.readRawVarint32();
                      int limit = input.pushLimit(length);
                      ensureAllowedExitCodesIsMutable();
                      while (input.getBytesUntilLimit() > 0) {
                        allowedExitCodes_.addInt(input.readInt32());
                      }
                      input.popLimit(limit);
                      break;
                    } // case 18
                  case 24:
                    {
                      interpreter_ = input.readEnum();
                      bitField0_ |= 0x00000004;
                      break;
                    } // case 24
                  default:
                    {
                      if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                        done = true; // was an endgroup tag
                      }
                      break;
                    } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }

          private int bitField0_;

          private java.lang.Object script_ = "";
          /**
           *
           *
           * <pre>
           * Required. The shell script to be executed.
           * </pre>
           *
           * <code>string script = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The script.
           */
          public java.lang.String getScript() {
            java.lang.Object ref = script_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              script_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The shell script to be executed.
           * </pre>
           *
           * <code>string script = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return The bytes for script.
           */
          public com.google.protobuf.ByteString getScriptBytes() {
            java.lang.Object ref = script_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b =
                  com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
              script_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           *
           *
           * <pre>
           * Required. The shell script to be executed.
           * </pre>
           *
           * <code>string script = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The script to set.
           * @return This builder for chaining.
           */
          public Builder setScript(java.lang.String value) {
            if (value == null) {
              throw new NullPointerException();
            }
            script_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The shell script to be executed.
           * </pre>
           *
           * <code>string script = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearScript() {
            script_ = getDefaultInstance().getScript();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Required. The shell script to be executed.
           * </pre>
           *
           * <code>string script = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           *
           * @param value The bytes for script to set.
           * @return This builder for chaining.
           */
          public Builder setScriptBytes(com.google.protobuf.ByteString value) {
            if (value == null) {
              throw new NullPointerException();
            }
            checkByteStringIsUtf8(value);
            script_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }

          private com.google.protobuf.Internal.IntList allowedExitCodes_ = emptyIntList();

          private void ensureAllowedExitCodesIsMutable() {
            if (!((bitField0_ & 0x00000002) != 0)) {
              allowedExitCodes_ = mutableCopy(allowedExitCodes_);
              bitField0_ |= 0x00000002;
            }
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 2;</code>
           *
           * @return A list containing the allowedExitCodes.
           */
          public java.util.List<java.lang.Integer> getAllowedExitCodesList() {
            return ((bitField0_ & 0x00000002) != 0)
                ? java.util.Collections.unmodifiableList(allowedExitCodes_)
                : allowedExitCodes_;
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 2;</code>
           *
           * @return The count of allowedExitCodes.
           */
          public int getAllowedExitCodesCount() {
            return allowedExitCodes_.size();
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 2;</code>
           *
           * @param index The index of the element to return.
           * @return The allowedExitCodes at the given index.
           */
          public int getAllowedExitCodes(int index) {
            return allowedExitCodes_.getInt(index);
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 2;</code>
           *
           * @param index The index to set the value at.
           * @param value The allowedExitCodes to set.
           * @return This builder for chaining.
           */
          public Builder setAllowedExitCodes(int index, int value) {

            ensureAllowedExitCodesIsMutable();
            allowedExitCodes_.setInt(index, value);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 2;</code>
           *
           * @param value The allowedExitCodes to add.
           * @return This builder for chaining.
           */
          public Builder addAllowedExitCodes(int value) {

            ensureAllowedExitCodesIsMutable();
            allowedExitCodes_.addInt(value);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 2;</code>
           *
           * @param values The allowedExitCodes to add.
           * @return This builder for chaining.
           */
          public Builder addAllAllowedExitCodes(
              java.lang.Iterable<? extends java.lang.Integer> values) {
            ensureAllowedExitCodesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(values, allowedExitCodes_);
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * Return codes that indicate that the software installed or updated
           * successfully. Behaviour defaults to [0]
           * </pre>
           *
           * <code>repeated int32 allowed_exit_codes = 2;</code>
           *
           * @return This builder for chaining.
           */
          public Builder clearAllowedExitCodes() {
            allowedExitCodes_ = emptyIntList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }

          private int interpreter_ = 0;
          /**
           *
           *
           * <pre>
           * The script interpreter to use to run the script. If no interpreter is
           * specified the script is executed directly, which likely
           * only succeed for scripts with
           * [shebang lines](https://en.wikipedia.org/wiki/Shebang_&#92;(Unix&#92;)).
           * </pre>
           *
           * <code>
           * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter interpreter = 3;
           * </code>
           *
           * @return The enum numeric value on the wire for interpreter.
           */
          @java.lang.Override
          public int getInterpreterValue() {
            return interpreter_;
          }
          /**
           *
           *
           * <pre>
           * The script interpreter to use to run the script. If no interpreter is
           * specified the script is executed directly, which likely
           * only succeed for scripts with
           * [shebang lines](https://en.wikipedia.org/wiki/Shebang_&#92;(Unix&#92;)).
           * </pre>
           *
           * <code>
           * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter interpreter = 3;
           * </code>
           *
           * @param value The enum numeric value on the wire for interpreter to set.
           * @return This builder for chaining.
           */
          public Builder setInterpreterValue(int value) {
            interpreter_ = value;
            bitField0_ |= 0x00000004;
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * The script interpreter to use to run the script. If no interpreter is
           * specified the script is executed directly, which likely
           * only succeed for scripts with
           * [shebang lines](https://en.wikipedia.org/wiki/Shebang_&#92;(Unix&#92;)).
           * </pre>
           *
           * <code>
           * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter interpreter = 3;
           * </code>
           *
           * @return The interpreter.
           */
          @java.lang.Override
          public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                  .Interpreter
              getInterpreter() {
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript.Interpreter
                result =
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                        .Interpreter.forNumber(interpreter_);
            return result == null
                ? com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                    .Interpreter.UNRECOGNIZED
                : result;
          }
          /**
           *
           *
           * <pre>
           * The script interpreter to use to run the script. If no interpreter is
           * specified the script is executed directly, which likely
           * only succeed for scripts with
           * [shebang lines](https://en.wikipedia.org/wiki/Shebang_&#92;(Unix&#92;)).
           * </pre>
           *
           * <code>
           * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter interpreter = 3;
           * </code>
           *
           * @param value The interpreter to set.
           * @return This builder for chaining.
           */
          public Builder setInterpreter(
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                      .Interpreter
                  value) {
            if (value == null) {
              throw new NullPointerException();
            }
            bitField0_ |= 0x00000004;
            interpreter_ = value.getNumber();
            onChanged();
            return this;
          }
          /**
           *
           *
           * <pre>
           * The script interpreter to use to run the script. If no interpreter is
           * specified the script is executed directly, which likely
           * only succeed for scripts with
           * [shebang lines](https://en.wikipedia.org/wiki/Shebang_&#92;(Unix&#92;)).
           * </pre>
           *
           * <code>
           * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript.Interpreter interpreter = 3;
           * </code>
           *
           * @return This builder for chaining.
           */
          public Builder clearInterpreter() {
            bitField0_ = (bitField0_ & ~0x00000004);
            interpreter_ = 0;
            onChanged();
            return this;
          }

          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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

          // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript)
        }

        // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript)
        private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .RunScript
            DEFAULT_INSTANCE;

        static {
          DEFAULT_INSTANCE =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript();
        }

        public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
      }

      private int stepCase_ = 0;
      private java.lang.Object step_;

      public enum StepCase
          implements
              com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        FILE_COPY(1),
        ARCHIVE_EXTRACTION(2),
        MSI_INSTALLATION(3),
        DPKG_INSTALLATION(4),
        RPM_INSTALLATION(5),
        FILE_EXEC(6),
        SCRIPT_RUN(7),
        STEP_NOT_SET(0);
        private final int value;

        private StepCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static StepCase valueOf(int value) {
          return forNumber(value);
        }

        public static StepCase forNumber(int value) {
          switch (value) {
            case 1:
              return FILE_COPY;
            case 2:
              return ARCHIVE_EXTRACTION;
            case 3:
              return MSI_INSTALLATION;
            case 4:
              return DPKG_INSTALLATION;
            case 5:
              return RPM_INSTALLATION;
            case 6:
              return FILE_EXEC;
            case 7:
              return SCRIPT_RUN;
            case 0:
              return STEP_NOT_SET;
            default:
              return null;
          }
        }

        public int getNumber() {
          return this.value;
        }
      };

      public StepCase getStepCase() {
        return StepCase.forNumber(stepCase_);
      }

      public static final int FILE_COPY_FIELD_NUMBER = 1;
      /**
       *
       *
       * <pre>
       * Copies a file onto the instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
       *
       * @return Whether the fileCopy field is set.
       */
      @java.lang.Override
      public boolean hasFileCopy() {
        return stepCase_ == 1;
      }
      /**
       *
       *
       * <pre>
       * Copies a file onto the instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
       *
       * @return The fileCopy.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
          getFileCopy() {
        if (stepCase_ == 1) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            .getDefaultInstance();
      }
      /**
       *
       *
       * <pre>
       * Copies a file onto the instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFileOrBuilder
          getFileCopyOrBuilder() {
        if (stepCase_ == 1) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            .getDefaultInstance();
      }

      public static final int ARCHIVE_EXTRACTION_FIELD_NUMBER = 2;
      /**
       *
       *
       * <pre>
       * Extracts an archive into the specified directory.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
       * </code>
       *
       * @return Whether the archiveExtraction field is set.
       */
      @java.lang.Override
      public boolean hasArchiveExtraction() {
        return stepCase_ == 2;
      }
      /**
       *
       *
       * <pre>
       * Extracts an archive into the specified directory.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
       * </code>
       *
       * @return The archiveExtraction.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
          getArchiveExtraction() {
        if (stepCase_ == 2) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
            .getDefaultInstance();
      }
      /**
       *
       *
       * <pre>
       * Extracts an archive into the specified directory.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
       * </code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
              .ExtractArchiveOrBuilder
          getArchiveExtractionOrBuilder() {
        if (stepCase_ == 2) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
            .getDefaultInstance();
      }

      public static final int MSI_INSTALLATION_FIELD_NUMBER = 3;
      /**
       *
       *
       * <pre>
       * Installs an MSI file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
       * </code>
       *
       * @return Whether the msiInstallation field is set.
       */
      @java.lang.Override
      public boolean hasMsiInstallation() {
        return stepCase_ == 3;
      }
      /**
       *
       *
       * <pre>
       * Installs an MSI file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
       * </code>
       *
       * @return The msiInstallation.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
          getMsiInstallation() {
        if (stepCase_ == 3) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            .getDefaultInstance();
      }
      /**
       *
       *
       * <pre>
       * Installs an MSI file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
       * </code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsiOrBuilder
          getMsiInstallationOrBuilder() {
        if (stepCase_ == 3) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            .getDefaultInstance();
      }

      public static final int DPKG_INSTALLATION_FIELD_NUMBER = 4;
      /**
       *
       *
       * <pre>
       * Installs a deb file via dpkg.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
       * </code>
       *
       * @return Whether the dpkgInstallation field is set.
       */
      @java.lang.Override
      public boolean hasDpkgInstallation() {
        return stepCase_ == 4;
      }
      /**
       *
       *
       * <pre>
       * Installs a deb file via dpkg.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
       * </code>
       *
       * @return The dpkgInstallation.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
          getDpkgInstallation() {
        if (stepCase_ == 4) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            .getDefaultInstance();
      }
      /**
       *
       *
       * <pre>
       * Installs a deb file via dpkg.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
       * </code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkgOrBuilder
          getDpkgInstallationOrBuilder() {
        if (stepCase_ == 4) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            .getDefaultInstance();
      }

      public static final int RPM_INSTALLATION_FIELD_NUMBER = 5;
      /**
       *
       *
       * <pre>
       * Installs an rpm file via the rpm utility.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
       * </code>
       *
       * @return Whether the rpmInstallation field is set.
       */
      @java.lang.Override
      public boolean hasRpmInstallation() {
        return stepCase_ == 5;
      }
      /**
       *
       *
       * <pre>
       * Installs an rpm file via the rpm utility.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
       * </code>
       *
       * @return The rpmInstallation.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
          getRpmInstallation() {
        if (stepCase_ == 5) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            .getDefaultInstance();
      }
      /**
       *
       *
       * <pre>
       * Installs an rpm file via the rpm utility.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
       * </code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpmOrBuilder
          getRpmInstallationOrBuilder() {
        if (stepCase_ == 5) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            .getDefaultInstance();
      }

      public static final int FILE_EXEC_FIELD_NUMBER = 6;
      /**
       *
       *
       * <pre>
       * Executes an artifact or local file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
       *
       * @return Whether the fileExec field is set.
       */
      @java.lang.Override
      public boolean hasFileExec() {
        return stepCase_ == 6;
      }
      /**
       *
       *
       * <pre>
       * Executes an artifact or local file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
       *
       * @return The fileExec.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
          getFileExec() {
        if (stepCase_ == 6) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            .getDefaultInstance();
      }
      /**
       *
       *
       * <pre>
       * Executes an artifact or local file.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFileOrBuilder
          getFileExecOrBuilder() {
        if (stepCase_ == 6) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            .getDefaultInstance();
      }

      public static final int SCRIPT_RUN_FIELD_NUMBER = 7;
      /**
       *
       *
       * <pre>
       * Runs commands in a shell.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
       *
       * @return Whether the scriptRun field is set.
       */
      @java.lang.Override
      public boolean hasScriptRun() {
        return stepCase_ == 7;
      }
      /**
       *
       *
       * <pre>
       * Runs commands in a shell.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
       *
       * @return The scriptRun.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
          getScriptRun() {
        if (stepCase_ == 7) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            .getDefaultInstance();
      }
      /**
       *
       *
       * <pre>
       * Runs commands in a shell.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScriptOrBuilder
          getScriptRunOrBuilder() {
        if (stepCase_ == 7) {
          return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript)
              step_;
        }
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            .getDefaultInstance();
      }

      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 (stepCase_ == 1) {
          output.writeMessage(
              1,
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile) step_);
        }
        if (stepCase_ == 2) {
          output.writeMessage(
              2,
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive)
                  step_);
        }
        if (stepCase_ == 3) {
          output.writeMessage(
              3,
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi)
                  step_);
        }
        if (stepCase_ == 4) {
          output.writeMessage(
              4,
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg)
                  step_);
        }
        if (stepCase_ == 5) {
          output.writeMessage(
              5,
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm)
                  step_);
        }
        if (stepCase_ == 6) {
          output.writeMessage(
              6,
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile) step_);
        }
        if (stepCase_ == 7) {
          output.writeMessage(
              7,
              (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript) step_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (stepCase_ == 1) {
          size +=
              com.google.protobuf.CodedOutputStream.computeMessageSize(
                  1,
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile)
                      step_);
        }
        if (stepCase_ == 2) {
          size +=
              com.google.protobuf.CodedOutputStream.computeMessageSize(
                  2,
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                          .ExtractArchive)
                      step_);
        }
        if (stepCase_ == 3) {
          size +=
              com.google.protobuf.CodedOutputStream.computeMessageSize(
                  3,
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi)
                      step_);
        }
        if (stepCase_ == 4) {
          size +=
              com.google.protobuf.CodedOutputStream.computeMessageSize(
                  4,
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg)
                      step_);
        }
        if (stepCase_ == 5) {
          size +=
              com.google.protobuf.CodedOutputStream.computeMessageSize(
                  5,
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm)
                      step_);
        }
        if (stepCase_ == 6) {
          size +=
              com.google.protobuf.CodedOutputStream.computeMessageSize(
                  6,
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile)
                      step_);
        }
        if (stepCase_ == 7) {
          size +=
              com.google.protobuf.CodedOutputStream.computeMessageSize(
                  7,
                  (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript)
                      step_);
        }
        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 com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step)) {
          return super.equals(obj);
        }
        com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step other =
            (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step) obj;

        if (!getStepCase().equals(other.getStepCase())) return false;
        switch (stepCase_) {
          case 1:
            if (!getFileCopy().equals(other.getFileCopy())) return false;
            break;
          case 2:
            if (!getArchiveExtraction().equals(other.getArchiveExtraction())) return false;
            break;
          case 3:
            if (!getMsiInstallation().equals(other.getMsiInstallation())) return false;
            break;
          case 4:
            if (!getDpkgInstallation().equals(other.getDpkgInstallation())) return false;
            break;
          case 5:
            if (!getRpmInstallation().equals(other.getRpmInstallation())) return false;
            break;
          case 6:
            if (!getFileExec().equals(other.getFileExec())) return false;
            break;
          case 7:
            if (!getScriptRun().equals(other.getScriptRun())) return false;
            break;
          case 0:
          default:
        }
        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();
        switch (stepCase_) {
          case 1:
            hash = (37 * hash) + FILE_COPY_FIELD_NUMBER;
            hash = (53 * hash) + getFileCopy().hashCode();
            break;
          case 2:
            hash = (37 * hash) + ARCHIVE_EXTRACTION_FIELD_NUMBER;
            hash = (53 * hash) + getArchiveExtraction().hashCode();
            break;
          case 3:
            hash = (37 * hash) + MSI_INSTALLATION_FIELD_NUMBER;
            hash = (53 * hash) + getMsiInstallation().hashCode();
            break;
          case 4:
            hash = (37 * hash) + DPKG_INSTALLATION_FIELD_NUMBER;
            hash = (53 * hash) + getDpkgInstallation().hashCode();
            break;
          case 5:
            hash = (37 * hash) + RPM_INSTALLATION_FIELD_NUMBER;
            hash = (53 * hash) + getRpmInstallation().hashCode();
            break;
          case 6:
            hash = (37 * hash) + FILE_EXEC_FIELD_NUMBER;
            hash = (53 * hash) + getFileExec().hashCode();
            break;
          case 7:
            hash = (37 * hash) + SCRIPT_RUN_FIELD_NUMBER;
            hash = (53 * hash) + getScriptRun().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step parseFrom(
          java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step parseFrom(
          java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step parseFrom(
          byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step parseFrom(
          byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step parseFrom(
          java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step parseFrom(
          java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
          parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
          parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step parseFrom(
          com.google.protobuf.CodedInputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() {
        return newBuilder();
      }

      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }

      public static Builder newBuilder(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step 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.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       *
       *
       * <pre>
       * An action that can be taken as part of installing or updating a recipe.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe.Step}
       */
      public static final class Builder
          extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
          implements
          // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe.Step)
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder.class);
        }

        // Construct using
        // com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.newBuilder()
        private Builder() {}

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

        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (fileCopyBuilder_ != null) {
            fileCopyBuilder_.clear();
          }
          if (archiveExtractionBuilder_ != null) {
            archiveExtractionBuilder_.clear();
          }
          if (msiInstallationBuilder_ != null) {
            msiInstallationBuilder_.clear();
          }
          if (dpkgInstallationBuilder_ != null) {
            dpkgInstallationBuilder_.clear();
          }
          if (rpmInstallationBuilder_ != null) {
            rpmInstallationBuilder_.clear();
          }
          if (fileExecBuilder_ != null) {
            fileExecBuilder_.clear();
          }
          if (scriptRunBuilder_ != null) {
            scriptRunBuilder_.clear();
          }
          stepCase_ = 0;
          step_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
            getDefaultInstanceForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
              .getDefaultInstance();
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step build() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step result =
              buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step buildPartial() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step result =
              new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step(this);
          if (bitField0_ != 0) {
            buildPartial0(result);
          }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step result) {
          result.stepCase_ = stepCase_;
          result.step_ = this.step_;
          if (stepCase_ == 1 && fileCopyBuilder_ != null) {
            result.step_ = fileCopyBuilder_.build();
          }
          if (stepCase_ == 2 && archiveExtractionBuilder_ != null) {
            result.step_ = archiveExtractionBuilder_.build();
          }
          if (stepCase_ == 3 && msiInstallationBuilder_ != null) {
            result.step_ = msiInstallationBuilder_.build();
          }
          if (stepCase_ == 4 && dpkgInstallationBuilder_ != null) {
            result.step_ = dpkgInstallationBuilder_.build();
          }
          if (stepCase_ == 5 && rpmInstallationBuilder_ != null) {
            result.step_ = rpmInstallationBuilder_.build();
          }
          if (stepCase_ == 6 && fileExecBuilder_ != null) {
            result.step_ = fileExecBuilder_.build();
          }
          if (stepCase_ == 7 && scriptRunBuilder_ != null) {
            result.step_ = scriptRunBuilder_.build();
          }
        }

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

        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.setField(field, value);
        }

        @java.lang.Override
        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }

        @java.lang.Override
        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }

        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index,
            java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }

        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step) {
            return mergeFrom(
                (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step) other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step other) {
          if (other
              == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                  .getDefaultInstance()) return this;
          switch (other.getStepCase()) {
            case FILE_COPY:
              {
                mergeFileCopy(other.getFileCopy());
                break;
              }
            case ARCHIVE_EXTRACTION:
              {
                mergeArchiveExtraction(other.getArchiveExtraction());
                break;
              }
            case MSI_INSTALLATION:
              {
                mergeMsiInstallation(other.getMsiInstallation());
                break;
              }
            case DPKG_INSTALLATION:
              {
                mergeDpkgInstallation(other.getDpkgInstallation());
                break;
              }
            case RPM_INSTALLATION:
              {
                mergeRpmInstallation(other.getRpmInstallation());
                break;
              }
            case FILE_EXEC:
              {
                mergeFileExec(other.getFileExec());
                break;
              }
            case SCRIPT_RUN:
              {
                mergeScriptRun(other.getScriptRun());
                break;
              }
            case STEP_NOT_SET:
              {
                break;
              }
          }
          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(getFileCopyFieldBuilder().getBuilder(), extensionRegistry);
                    stepCase_ = 1;
                    break;
                  } // case 10
                case 18:
                  {
                    input.readMessage(
                        getArchiveExtractionFieldBuilder().getBuilder(), extensionRegistry);
                    stepCase_ = 2;
                    break;
                  } // case 18
                case 26:
                  {
                    input.readMessage(
                        getMsiInstallationFieldBuilder().getBuilder(), extensionRegistry);
                    stepCase_ = 3;
                    break;
                  } // case 26
                case 34:
                  {
                    input.readMessage(
                        getDpkgInstallationFieldBuilder().getBuilder(), extensionRegistry);
                    stepCase_ = 4;
                    break;
                  } // case 34
                case 42:
                  {
                    input.readMessage(
                        getRpmInstallationFieldBuilder().getBuilder(), extensionRegistry);
                    stepCase_ = 5;
                    break;
                  } // case 42
                case 50:
                  {
                    input.readMessage(getFileExecFieldBuilder().getBuilder(), extensionRegistry);
                    stepCase_ = 6;
                    break;
                  } // case 50
                case 58:
                  {
                    input.readMessage(getScriptRunFieldBuilder().getBuilder(), extensionRegistry);
                    stepCase_ = 7;
                    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 stepCase_ = 0;
        private java.lang.Object step_;

        public StepCase getStepCase() {
          return StepCase.forNumber(stepCase_);
        }

        public Builder clearStep() {
          stepCase_ = 0;
          step_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .CopyFileOrBuilder>
            fileCopyBuilder_;
        /**
         *
         *
         * <pre>
         * Copies a file onto the instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
         *
         * @return Whether the fileCopy field is set.
         */
        @java.lang.Override
        public boolean hasFileCopy() {
          return stepCase_ == 1;
        }
        /**
         *
         *
         * <pre>
         * Copies a file onto the instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
         *
         * @return The fileCopy.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
            getFileCopy() {
          if (fileCopyBuilder_ == null) {
            if (stepCase_ == 1) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                .getDefaultInstance();
          } else {
            if (stepCase_ == 1) {
              return fileCopyBuilder_.getMessage();
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Copies a file onto the instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
         */
        public Builder setFileCopy(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile value) {
          if (fileCopyBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            step_ = value;
            onChanged();
          } else {
            fileCopyBuilder_.setMessage(value);
          }
          stepCase_ = 1;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Copies a file onto the instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
         */
        public Builder setFileCopy(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile.Builder
                builderForValue) {
          if (fileCopyBuilder_ == null) {
            step_ = builderForValue.build();
            onChanged();
          } else {
            fileCopyBuilder_.setMessage(builderForValue.build());
          }
          stepCase_ = 1;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Copies a file onto the instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
         */
        public Builder mergeFileCopy(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile value) {
          if (fileCopyBuilder_ == null) {
            if (stepCase_ == 1
                && step_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                        .getDefaultInstance()) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                      .newBuilder(
                          (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                                  .CopyFile)
                              step_)
                      .mergeFrom(value)
                      .buildPartial();
            } else {
              step_ = value;
            }
            onChanged();
          } else {
            if (stepCase_ == 1) {
              fileCopyBuilder_.mergeFrom(value);
            } else {
              fileCopyBuilder_.setMessage(value);
            }
          }
          stepCase_ = 1;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Copies a file onto the instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
         */
        public Builder clearFileCopy() {
          if (fileCopyBuilder_ == null) {
            if (stepCase_ == 1) {
              stepCase_ = 0;
              step_ = null;
              onChanged();
            }
          } else {
            if (stepCase_ == 1) {
              stepCase_ = 0;
              step_ = null;
            }
            fileCopyBuilder_.clear();
          }
          return this;
        }
        /**
         *
         *
         * <pre>
         * Copies a file onto the instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile.Builder
            getFileCopyBuilder() {
          return getFileCopyFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * Copies a file onto the instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFileOrBuilder
            getFileCopyOrBuilder() {
          if ((stepCase_ == 1) && (fileCopyBuilder_ != null)) {
            return fileCopyBuilder_.getMessageOrBuilder();
          } else {
            if (stepCase_ == 1) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Copies a file onto the instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.CopyFile file_copy = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .CopyFileOrBuilder>
            getFileCopyFieldBuilder() {
          if (fileCopyBuilder_ == null) {
            if (!(stepCase_ == 1)) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                      .getDefaultInstance();
            }
            fileCopyBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile
                        .Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .CopyFileOrBuilder>(
                    (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.CopyFile)
                        step_,
                    getParentForChildren(),
                    isClean());
            step_ = null;
          }
          stepCase_ = 1;
          onChanged();
          return fileCopyBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .ExtractArchiveOrBuilder>
            archiveExtractionBuilder_;
        /**
         *
         *
         * <pre>
         * Extracts an archive into the specified directory.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
         * </code>
         *
         * @return Whether the archiveExtraction field is set.
         */
        @java.lang.Override
        public boolean hasArchiveExtraction() {
          return stepCase_ == 2;
        }
        /**
         *
         *
         * <pre>
         * Extracts an archive into the specified directory.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
         * </code>
         *
         * @return The archiveExtraction.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
            getArchiveExtraction() {
          if (archiveExtractionBuilder_ == null) {
            if (stepCase_ == 2) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                      .ExtractArchive)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                .getDefaultInstance();
          } else {
            if (stepCase_ == 2) {
              return archiveExtractionBuilder_.getMessage();
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Extracts an archive into the specified directory.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
         * </code>
         */
        public Builder setArchiveExtraction(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                value) {
          if (archiveExtractionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            step_ = value;
            onChanged();
          } else {
            archiveExtractionBuilder_.setMessage(value);
          }
          stepCase_ = 2;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Extracts an archive into the specified directory.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
         * </code>
         */
        public Builder setArchiveExtraction(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                    .Builder
                builderForValue) {
          if (archiveExtractionBuilder_ == null) {
            step_ = builderForValue.build();
            onChanged();
          } else {
            archiveExtractionBuilder_.setMessage(builderForValue.build());
          }
          stepCase_ = 2;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Extracts an archive into the specified directory.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
         * </code>
         */
        public Builder mergeArchiveExtraction(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                value) {
          if (archiveExtractionBuilder_ == null) {
            if (stepCase_ == 2
                && step_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .ExtractArchive.getDefaultInstance()) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                      .newBuilder(
                          (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                                  .ExtractArchive)
                              step_)
                      .mergeFrom(value)
                      .buildPartial();
            } else {
              step_ = value;
            }
            onChanged();
          } else {
            if (stepCase_ == 2) {
              archiveExtractionBuilder_.mergeFrom(value);
            } else {
              archiveExtractionBuilder_.setMessage(value);
            }
          }
          stepCase_ = 2;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Extracts an archive into the specified directory.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
         * </code>
         */
        public Builder clearArchiveExtraction() {
          if (archiveExtractionBuilder_ == null) {
            if (stepCase_ == 2) {
              stepCase_ = 0;
              step_ = null;
              onChanged();
            }
          } else {
            if (stepCase_ == 2) {
              stepCase_ = 0;
              step_ = null;
            }
            archiveExtractionBuilder_.clear();
          }
          return this;
        }
        /**
         *
         *
         * <pre>
         * Extracts an archive into the specified directory.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
         * </code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                .Builder
            getArchiveExtractionBuilder() {
          return getArchiveExtractionFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * Extracts an archive into the specified directory.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
         * </code>
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .ExtractArchiveOrBuilder
            getArchiveExtractionOrBuilder() {
          if ((stepCase_ == 2) && (archiveExtractionBuilder_ != null)) {
            return archiveExtractionBuilder_.getMessageOrBuilder();
          } else {
            if (stepCase_ == 2) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                      .ExtractArchive)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Extracts an archive into the specified directory.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExtractArchive archive_extraction = 2;
         * </code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .ExtractArchiveOrBuilder>
            getArchiveExtractionFieldBuilder() {
          if (archiveExtractionBuilder_ == null) {
            if (!(stepCase_ == 2)) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExtractArchive
                      .getDefaultInstance();
            }
            archiveExtractionBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .ExtractArchive,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .ExtractArchive.Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .ExtractArchiveOrBuilder>(
                    (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                            .ExtractArchive)
                        step_,
                    getParentForChildren(),
                    isClean());
            step_ = null;
          }
          stepCase_ = 2;
          onChanged();
          return archiveExtractionBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .InstallMsiOrBuilder>
            msiInstallationBuilder_;
        /**
         *
         *
         * <pre>
         * Installs an MSI file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
         * </code>
         *
         * @return Whether the msiInstallation field is set.
         */
        @java.lang.Override
        public boolean hasMsiInstallation() {
          return stepCase_ == 3;
        }
        /**
         *
         *
         * <pre>
         * Installs an MSI file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
         * </code>
         *
         * @return The msiInstallation.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
            getMsiInstallation() {
          if (msiInstallationBuilder_ == null) {
            if (stepCase_ == 3) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                .getDefaultInstance();
          } else {
            if (stepCase_ == 3) {
              return msiInstallationBuilder_.getMessage();
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Installs an MSI file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
         * </code>
         */
        public Builder setMsiInstallation(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi value) {
          if (msiInstallationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            step_ = value;
            onChanged();
          } else {
            msiInstallationBuilder_.setMessage(value);
          }
          stepCase_ = 3;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs an MSI file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
         * </code>
         */
        public Builder setMsiInstallation(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi.Builder
                builderForValue) {
          if (msiInstallationBuilder_ == null) {
            step_ = builderForValue.build();
            onChanged();
          } else {
            msiInstallationBuilder_.setMessage(builderForValue.build());
          }
          stepCase_ = 3;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs an MSI file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
         * </code>
         */
        public Builder mergeMsiInstallation(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi value) {
          if (msiInstallationBuilder_ == null) {
            if (stepCase_ == 3
                && step_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                        .getDefaultInstance()) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                      .newBuilder(
                          (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                                  .InstallMsi)
                              step_)
                      .mergeFrom(value)
                      .buildPartial();
            } else {
              step_ = value;
            }
            onChanged();
          } else {
            if (stepCase_ == 3) {
              msiInstallationBuilder_.mergeFrom(value);
            } else {
              msiInstallationBuilder_.setMessage(value);
            }
          }
          stepCase_ = 3;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs an MSI file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
         * </code>
         */
        public Builder clearMsiInstallation() {
          if (msiInstallationBuilder_ == null) {
            if (stepCase_ == 3) {
              stepCase_ = 0;
              step_ = null;
              onChanged();
            }
          } else {
            if (stepCase_ == 3) {
              stepCase_ = 0;
              step_ = null;
            }
            msiInstallationBuilder_.clear();
          }
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs an MSI file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
         * </code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi.Builder
            getMsiInstallationBuilder() {
          return getMsiInstallationFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * Installs an MSI file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
         * </code>
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .InstallMsiOrBuilder
            getMsiInstallationOrBuilder() {
          if ((stepCase_ == 3) && (msiInstallationBuilder_ != null)) {
            return msiInstallationBuilder_.getMessageOrBuilder();
          } else {
            if (stepCase_ == 3) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Installs an MSI file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallMsi msi_installation = 3;
         * </code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .InstallMsiOrBuilder>
            getMsiInstallationFieldBuilder() {
          if (msiInstallationBuilder_ == null) {
            if (!(stepCase_ == 3)) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                      .getDefaultInstance();
            }
            msiInstallationBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi
                        .Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .InstallMsiOrBuilder>(
                    (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallMsi)
                        step_,
                    getParentForChildren(),
                    isClean());
            step_ = null;
          }
          stepCase_ = 3;
          onChanged();
          return msiInstallationBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .InstallDpkgOrBuilder>
            dpkgInstallationBuilder_;
        /**
         *
         *
         * <pre>
         * Installs a deb file via dpkg.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
         * </code>
         *
         * @return Whether the dpkgInstallation field is set.
         */
        @java.lang.Override
        public boolean hasDpkgInstallation() {
          return stepCase_ == 4;
        }
        /**
         *
         *
         * <pre>
         * Installs a deb file via dpkg.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
         * </code>
         *
         * @return The dpkgInstallation.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
            getDpkgInstallation() {
          if (dpkgInstallationBuilder_ == null) {
            if (stepCase_ == 4) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                      .InstallDpkg)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                .getDefaultInstance();
          } else {
            if (stepCase_ == 4) {
              return dpkgInstallationBuilder_.getMessage();
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Installs a deb file via dpkg.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
         * </code>
         */
        public Builder setDpkgInstallation(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg value) {
          if (dpkgInstallationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            step_ = value;
            onChanged();
          } else {
            dpkgInstallationBuilder_.setMessage(value);
          }
          stepCase_ = 4;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs a deb file via dpkg.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
         * </code>
         */
        public Builder setDpkgInstallation(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg.Builder
                builderForValue) {
          if (dpkgInstallationBuilder_ == null) {
            step_ = builderForValue.build();
            onChanged();
          } else {
            dpkgInstallationBuilder_.setMessage(builderForValue.build());
          }
          stepCase_ = 4;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs a deb file via dpkg.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
         * </code>
         */
        public Builder mergeDpkgInstallation(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg value) {
          if (dpkgInstallationBuilder_ == null) {
            if (stepCase_ == 4
                && step_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .InstallDpkg.getDefaultInstance()) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                      .newBuilder(
                          (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                                  .InstallDpkg)
                              step_)
                      .mergeFrom(value)
                      .buildPartial();
            } else {
              step_ = value;
            }
            onChanged();
          } else {
            if (stepCase_ == 4) {
              dpkgInstallationBuilder_.mergeFrom(value);
            } else {
              dpkgInstallationBuilder_.setMessage(value);
            }
          }
          stepCase_ = 4;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs a deb file via dpkg.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
         * </code>
         */
        public Builder clearDpkgInstallation() {
          if (dpkgInstallationBuilder_ == null) {
            if (stepCase_ == 4) {
              stepCase_ = 0;
              step_ = null;
              onChanged();
            }
          } else {
            if (stepCase_ == 4) {
              stepCase_ = 0;
              step_ = null;
            }
            dpkgInstallationBuilder_.clear();
          }
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs a deb file via dpkg.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
         * </code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                .Builder
            getDpkgInstallationBuilder() {
          return getDpkgInstallationFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * Installs a deb file via dpkg.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
         * </code>
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .InstallDpkgOrBuilder
            getDpkgInstallationOrBuilder() {
          if ((stepCase_ == 4) && (dpkgInstallationBuilder_ != null)) {
            return dpkgInstallationBuilder_.getMessageOrBuilder();
          } else {
            if (stepCase_ == 4) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                      .InstallDpkg)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Installs a deb file via dpkg.
         * </pre>
         *
         * <code>
         * .google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallDpkg dpkg_installation = 4;
         * </code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .InstallDpkgOrBuilder>
            getDpkgInstallationFieldBuilder() {
          if (dpkgInstallationBuilder_ == null) {
            if (!(stepCase_ == 4)) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                      .getDefaultInstance();
            }
            dpkgInstallationBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg
                        .Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .InstallDpkgOrBuilder>(
                    (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallDpkg)
                        step_,
                    getParentForChildren(),
                    isClean());
            step_ = null;
          }
          stepCase_ = 4;
          onChanged();
          return dpkgInstallationBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .InstallRpmOrBuilder>
            rpmInstallationBuilder_;
        /**
         *
         *
         * <pre>
         * Installs an rpm file via the rpm utility.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
         * </code>
         *
         * @return Whether the rpmInstallation field is set.
         */
        @java.lang.Override
        public boolean hasRpmInstallation() {
          return stepCase_ == 5;
        }
        /**
         *
         *
         * <pre>
         * Installs an rpm file via the rpm utility.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
         * </code>
         *
         * @return The rpmInstallation.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
            getRpmInstallation() {
          if (rpmInstallationBuilder_ == null) {
            if (stepCase_ == 5) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                .getDefaultInstance();
          } else {
            if (stepCase_ == 5) {
              return rpmInstallationBuilder_.getMessage();
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Installs an rpm file via the rpm utility.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
         * </code>
         */
        public Builder setRpmInstallation(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm value) {
          if (rpmInstallationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            step_ = value;
            onChanged();
          } else {
            rpmInstallationBuilder_.setMessage(value);
          }
          stepCase_ = 5;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs an rpm file via the rpm utility.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
         * </code>
         */
        public Builder setRpmInstallation(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm.Builder
                builderForValue) {
          if (rpmInstallationBuilder_ == null) {
            step_ = builderForValue.build();
            onChanged();
          } else {
            rpmInstallationBuilder_.setMessage(builderForValue.build());
          }
          stepCase_ = 5;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs an rpm file via the rpm utility.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
         * </code>
         */
        public Builder mergeRpmInstallation(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm value) {
          if (rpmInstallationBuilder_ == null) {
            if (stepCase_ == 5
                && step_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                        .getDefaultInstance()) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                      .newBuilder(
                          (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                                  .InstallRpm)
                              step_)
                      .mergeFrom(value)
                      .buildPartial();
            } else {
              step_ = value;
            }
            onChanged();
          } else {
            if (stepCase_ == 5) {
              rpmInstallationBuilder_.mergeFrom(value);
            } else {
              rpmInstallationBuilder_.setMessage(value);
            }
          }
          stepCase_ = 5;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs an rpm file via the rpm utility.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
         * </code>
         */
        public Builder clearRpmInstallation() {
          if (rpmInstallationBuilder_ == null) {
            if (stepCase_ == 5) {
              stepCase_ = 0;
              step_ = null;
              onChanged();
            }
          } else {
            if (stepCase_ == 5) {
              stepCase_ = 0;
              step_ = null;
            }
            rpmInstallationBuilder_.clear();
          }
          return this;
        }
        /**
         *
         *
         * <pre>
         * Installs an rpm file via the rpm utility.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
         * </code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm.Builder
            getRpmInstallationBuilder() {
          return getRpmInstallationFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * Installs an rpm file via the rpm utility.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
         * </code>
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                .InstallRpmOrBuilder
            getRpmInstallationOrBuilder() {
          if ((stepCase_ == 5) && (rpmInstallationBuilder_ != null)) {
            return rpmInstallationBuilder_.getMessageOrBuilder();
          } else {
            if (stepCase_ == 5) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Installs an rpm file via the rpm utility.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.InstallRpm rpm_installation = 5;
         * </code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .InstallRpmOrBuilder>
            getRpmInstallationFieldBuilder() {
          if (rpmInstallationBuilder_ == null) {
            if (!(stepCase_ == 5)) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                      .getDefaultInstance();
            }
            rpmInstallationBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm
                        .Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .InstallRpmOrBuilder>(
                    (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.InstallRpm)
                        step_,
                    getParentForChildren(),
                    isClean());
            step_ = null;
          }
          stepCase_ = 5;
          onChanged();
          return rpmInstallationBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .ExecFileOrBuilder>
            fileExecBuilder_;
        /**
         *
         *
         * <pre>
         * Executes an artifact or local file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
         *
         * @return Whether the fileExec field is set.
         */
        @java.lang.Override
        public boolean hasFileExec() {
          return stepCase_ == 6;
        }
        /**
         *
         *
         * <pre>
         * Executes an artifact or local file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
         *
         * @return The fileExec.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
            getFileExec() {
          if (fileExecBuilder_ == null) {
            if (stepCase_ == 6) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                .getDefaultInstance();
          } else {
            if (stepCase_ == 6) {
              return fileExecBuilder_.getMessage();
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Executes an artifact or local file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
         */
        public Builder setFileExec(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile value) {
          if (fileExecBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            step_ = value;
            onChanged();
          } else {
            fileExecBuilder_.setMessage(value);
          }
          stepCase_ = 6;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Executes an artifact or local file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
         */
        public Builder setFileExec(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile.Builder
                builderForValue) {
          if (fileExecBuilder_ == null) {
            step_ = builderForValue.build();
            onChanged();
          } else {
            fileExecBuilder_.setMessage(builderForValue.build());
          }
          stepCase_ = 6;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Executes an artifact or local file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
         */
        public Builder mergeFileExec(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile value) {
          if (fileExecBuilder_ == null) {
            if (stepCase_ == 6
                && step_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                        .getDefaultInstance()) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                      .newBuilder(
                          (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                                  .ExecFile)
                              step_)
                      .mergeFrom(value)
                      .buildPartial();
            } else {
              step_ = value;
            }
            onChanged();
          } else {
            if (stepCase_ == 6) {
              fileExecBuilder_.mergeFrom(value);
            } else {
              fileExecBuilder_.setMessage(value);
            }
          }
          stepCase_ = 6;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Executes an artifact or local file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
         */
        public Builder clearFileExec() {
          if (fileExecBuilder_ == null) {
            if (stepCase_ == 6) {
              stepCase_ = 0;
              step_ = null;
              onChanged();
            }
          } else {
            if (stepCase_ == 6) {
              stepCase_ = 0;
              step_ = null;
            }
            fileExecBuilder_.clear();
          }
          return this;
        }
        /**
         *
         *
         * <pre>
         * Executes an artifact or local file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile.Builder
            getFileExecBuilder() {
          return getFileExecFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * Executes an artifact or local file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFileOrBuilder
            getFileExecOrBuilder() {
          if ((stepCase_ == 6) && (fileExecBuilder_ != null)) {
            return fileExecBuilder_.getMessageOrBuilder();
          } else {
            if (stepCase_ == 6) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Executes an artifact or local file.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.ExecFile file_exec = 6;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .ExecFileOrBuilder>
            getFileExecFieldBuilder() {
          if (fileExecBuilder_ == null) {
            if (!(stepCase_ == 6)) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                      .getDefaultInstance();
            }
            fileExecBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile
                        .Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .ExecFileOrBuilder>(
                    (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.ExecFile)
                        step_,
                    getParentForChildren(),
                    isClean());
            step_ = null;
          }
          stepCase_ = 6;
          onChanged();
          return fileExecBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .RunScriptOrBuilder>
            scriptRunBuilder_;
        /**
         *
         *
         * <pre>
         * Runs commands in a shell.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
         *
         * @return Whether the scriptRun field is set.
         */
        @java.lang.Override
        public boolean hasScriptRun() {
          return stepCase_ == 7;
        }
        /**
         *
         *
         * <pre>
         * Runs commands in a shell.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
         *
         * @return The scriptRun.
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
            getScriptRun() {
          if (scriptRunBuilder_ == null) {
            if (stepCase_ == 7) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                .getDefaultInstance();
          } else {
            if (stepCase_ == 7) {
              return scriptRunBuilder_.getMessage();
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Runs commands in a shell.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
         */
        public Builder setScriptRun(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript value) {
          if (scriptRunBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            step_ = value;
            onChanged();
          } else {
            scriptRunBuilder_.setMessage(value);
          }
          stepCase_ = 7;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Runs commands in a shell.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
         */
        public Builder setScriptRun(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript.Builder
                builderForValue) {
          if (scriptRunBuilder_ == null) {
            step_ = builderForValue.build();
            onChanged();
          } else {
            scriptRunBuilder_.setMessage(builderForValue.build());
          }
          stepCase_ = 7;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Runs commands in a shell.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
         */
        public Builder mergeScriptRun(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript value) {
          if (scriptRunBuilder_ == null) {
            if (stepCase_ == 7
                && step_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                        .getDefaultInstance()) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                      .newBuilder(
                          (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                                  .RunScript)
                              step_)
                      .mergeFrom(value)
                      .buildPartial();
            } else {
              step_ = value;
            }
            onChanged();
          } else {
            if (stepCase_ == 7) {
              scriptRunBuilder_.mergeFrom(value);
            } else {
              scriptRunBuilder_.setMessage(value);
            }
          }
          stepCase_ = 7;
          return this;
        }
        /**
         *
         *
         * <pre>
         * Runs commands in a shell.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
         */
        public Builder clearScriptRun() {
          if (scriptRunBuilder_ == null) {
            if (stepCase_ == 7) {
              stepCase_ = 0;
              step_ = null;
              onChanged();
            }
          } else {
            if (stepCase_ == 7) {
              stepCase_ = 0;
              step_ = null;
            }
            scriptRunBuilder_.clear();
          }
          return this;
        }
        /**
         *
         *
         * <pre>
         * Runs commands in a shell.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript.Builder
            getScriptRunBuilder() {
          return getScriptRunFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * Runs commands in a shell.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
         */
        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScriptOrBuilder
            getScriptRunOrBuilder() {
          if ((stepCase_ == 7) && (scriptRunBuilder_ != null)) {
            return scriptRunBuilder_.getMessageOrBuilder();
          } else {
            if (stepCase_ == 7) {
              return (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript)
                  step_;
            }
            return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                .getDefaultInstance();
          }
        }
        /**
         *
         *
         * <pre>
         * Runs commands in a shell.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe.Step.RunScript script_run = 7;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                    .Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .RunScriptOrBuilder>
            getScriptRunFieldBuilder() {
          if (scriptRunBuilder_ == null) {
            if (!(stepCase_ == 7)) {
              step_ =
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                      .getDefaultInstance();
            }
            scriptRunBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript
                        .Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                        .RunScriptOrBuilder>(
                    (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.RunScript)
                        step_,
                    getParentForChildren(),
                    isClean());
            step_ = null;
          }
          stepCase_ = 7;
          onChanged();
          return scriptRunBuilder_;
        }

        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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

        // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step)
      }

      // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe.Step)
      private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
          DEFAULT_INSTANCE;

      static {
        DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step();
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
          getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
          getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }

    public static final int NAME_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     *
     *
     * <pre>
     * Required. Unique identifier for the recipe. Only one recipe with a given name is
     * installed on an instance.
     * Names are also used to identify resources which helps to determine whether
     * guest policies have conflicts. This means that requests to create multiple
     * recipes with the same name and version are rejected since they
     * could potentially have conflicting assignments.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
        name_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. Unique identifier for the recipe. Only one recipe with a given name is
     * installed on an instance.
     * Names are also used to identify resources which helps to determine whether
     * guest policies have conflicts. This means that requests to create multiple
     * recipes with the same name and version are rejected since they
     * could potentially have conflicting assignments.
     * </pre>
     *
     * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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 VERSION_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private volatile java.lang.Object version_ = "";
    /**
     *
     *
     * <pre>
     * The version of this software recipe. Version can be up to 4 period
     * separated numbers (e.g. 12.34.56.78).
     * </pre>
     *
     * <code>string version = 2;</code>
     *
     * @return The version.
     */
    @java.lang.Override
    public java.lang.String getVersion() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * The version of this software recipe. Version can be up to 4 period
     * separated numbers (e.g. 12.34.56.78).
     * </pre>
     *
     * <code>string version = 2;</code>
     *
     * @return The bytes for version.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARTIFACTS_FIELD_NUMBER = 3;

    @SuppressWarnings("serial")
    private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact>
        artifacts_;
    /**
     *
     *
     * <pre>
     * Resources available to be used in the steps in the recipe.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact>
        getArtifactsList() {
      return artifacts_;
    }
    /**
     *
     *
     * <pre>
     * Resources available to be used in the steps in the recipe.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.ArtifactOrBuilder>
        getArtifactsOrBuilderList() {
      return artifacts_;
    }
    /**
     *
     *
     * <pre>
     * Resources available to be used in the steps in the recipe.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
     */
    @java.lang.Override
    public int getArtifactsCount() {
      return artifacts_.size();
    }
    /**
     *
     *
     * <pre>
     * Resources available to be used in the steps in the recipe.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact getArtifacts(
        int index) {
      return artifacts_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Resources available to be used in the steps in the recipe.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.ArtifactOrBuilder
        getArtifactsOrBuilder(int index) {
      return artifacts_.get(index);
    }

    public static final int INSTALL_STEPS_FIELD_NUMBER = 4;

    @SuppressWarnings("serial")
    private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
        installSteps_;
    /**
     *
     *
     * <pre>
     * Actions to be taken for installing this recipe. On failure it stops
     * executing steps and does not attempt another installation. Any steps taken
     * (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
        getInstallStepsList() {
      return installSteps_;
    }
    /**
     *
     *
     * <pre>
     * Actions to be taken for installing this recipe. On failure it stops
     * executing steps and does not attempt another installation. Any steps taken
     * (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>
        getInstallStepsOrBuilderList() {
      return installSteps_;
    }
    /**
     *
     *
     * <pre>
     * Actions to be taken for installing this recipe. On failure it stops
     * executing steps and does not attempt another installation. Any steps taken
     * (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
     */
    @java.lang.Override
    public int getInstallStepsCount() {
      return installSteps_.size();
    }
    /**
     *
     *
     * <pre>
     * Actions to be taken for installing this recipe. On failure it stops
     * executing steps and does not attempt another installation. Any steps taken
     * (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step getInstallSteps(
        int index) {
      return installSteps_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Actions to be taken for installing this recipe. On failure it stops
     * executing steps and does not attempt another installation. Any steps taken
     * (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder
        getInstallStepsOrBuilder(int index) {
      return installSteps_.get(index);
    }

    public static final int UPDATE_STEPS_FIELD_NUMBER = 5;

    @SuppressWarnings("serial")
    private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
        updateSteps_;
    /**
     *
     *
     * <pre>
     * Actions to be taken for updating this recipe. On failure it stops
     * executing steps and  does not attempt another update for this recipe. Any
     * steps taken (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
        getUpdateStepsList() {
      return updateSteps_;
    }
    /**
     *
     *
     * <pre>
     * Actions to be taken for updating this recipe. On failure it stops
     * executing steps and  does not attempt another update for this recipe. Any
     * steps taken (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>
        getUpdateStepsOrBuilderList() {
      return updateSteps_;
    }
    /**
     *
     *
     * <pre>
     * Actions to be taken for updating this recipe. On failure it stops
     * executing steps and  does not attempt another update for this recipe. Any
     * steps taken (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
     */
    @java.lang.Override
    public int getUpdateStepsCount() {
      return updateSteps_.size();
    }
    /**
     *
     *
     * <pre>
     * Actions to be taken for updating this recipe. On failure it stops
     * executing steps and  does not attempt another update for this recipe. Any
     * steps taken (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step getUpdateSteps(
        int index) {
      return updateSteps_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Actions to be taken for updating this recipe. On failure it stops
     * executing steps and  does not attempt another update for this recipe. Any
     * steps taken (including partially completed steps) are not rolled back.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder
        getUpdateStepsOrBuilder(int index) {
      return updateSteps_.get(index);
    }

    public static final int DESIRED_STATE_FIELD_NUMBER = 6;
    private int desiredState_ = 0;
    /**
     *
     *
     * <pre>
     * Default is INSTALLED. The desired state the agent should maintain for this
     * recipe.
     * INSTALLED: The software recipe is installed on the instance but
     *            won't be updated to new versions.
     * UPDATED: The software recipe is installed on the instance. The recipe is
     *          updated to a higher version, if a higher version of the recipe is
     *          assigned to this instance.
     * REMOVE: Remove is unsupported for software recipes and attempts to
     *         create or update a recipe to the REMOVE state is rejected.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 6;</code>
     *
     * @return The enum numeric value on the wire for desiredState.
     */
    @java.lang.Override
    public int getDesiredStateValue() {
      return desiredState_;
    }
    /**
     *
     *
     * <pre>
     * Default is INSTALLED. The desired state the agent should maintain for this
     * recipe.
     * INSTALLED: The software recipe is installed on the instance but
     *            won't be updated to new versions.
     * UPDATED: The software recipe is installed on the instance. The recipe is
     *          updated to a higher version, if a higher version of the recipe is
     *          assigned to this instance.
     * REMOVE: Remove is unsupported for software recipes and attempts to
     *         create or update a recipe to the REMOVE state is rejected.
     * </pre>
     *
     * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 6;</code>
     *
     * @return The desiredState.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState getDesiredState() {
      com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState result =
          com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.forNumber(desiredState_);
      return result == null
          ? com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.UNRECOGNIZED
          : result;
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
      }
      for (int i = 0; i < artifacts_.size(); i++) {
        output.writeMessage(3, artifacts_.get(i));
      }
      for (int i = 0; i < installSteps_.size(); i++) {
        output.writeMessage(4, installSteps_.get(i));
      }
      for (int i = 0; i < updateSteps_.size(); i++) {
        output.writeMessage(5, updateSteps_.get(i));
      }
      if (desiredState_
          != com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.DESIRED_STATE_UNSPECIFIED
              .getNumber()) {
        output.writeEnum(6, desiredState_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
      }
      for (int i = 0; i < artifacts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, artifacts_.get(i));
      }
      for (int i = 0; i < installSteps_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, installSteps_.get(i));
      }
      for (int i = 0; i < updateSteps_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, updateSteps_.get(i));
      }
      if (desiredState_
          != com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.DESIRED_STATE_UNSPECIFIED
              .getNumber()) {
        size += com.google.protobuf.CodedOutputStream.computeEnumSize(6, desiredState_);
      }
      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 com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe) obj;

      if (!getName().equals(other.getName())) return false;
      if (!getVersion().equals(other.getVersion())) return false;
      if (!getArtifactsList().equals(other.getArtifactsList())) return false;
      if (!getInstallStepsList().equals(other.getInstallStepsList())) return false;
      if (!getUpdateStepsList().equals(other.getUpdateStepsList())) return false;
      if (desiredState_ != other.desiredState_) 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();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      if (getArtifactsCount() > 0) {
        hash = (37 * hash) + ARTIFACTS_FIELD_NUMBER;
        hash = (53 * hash) + getArtifactsList().hashCode();
      }
      if (getInstallStepsCount() > 0) {
        hash = (37 * hash) + INSTALL_STEPS_FIELD_NUMBER;
        hash = (53 * hash) + getInstallStepsList().hashCode();
      }
      if (getUpdateStepsCount() > 0) {
        hash = (37 * hash) + UPDATE_STEPS_FIELD_NUMBER;
        hash = (53 * hash) + getUpdateStepsList().hashCode();
      }
      hash = (37 * hash) + DESIRED_STATE_FIELD_NUMBER;
      hash = (53 * hash) + desiredState_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * A software recipe is a set of instructions for installing and configuring a
     * piece of software. It consists of a set of artifacts that are
     * downloaded, and a set of steps that install, configure, and/or update the
     * software.
     * Recipes support installing and updating software from artifacts in the
     * following formats:
     * Zip archive, Tar archive, Windows MSI, Debian package, and RPM package.
     * Additionally, recipes support executing a script (either defined in a file or
     * directly in this api) in bash, sh, cmd, and powershell.
     * Updating a software recipe
     * If a recipe is assigned to an instance and there is a recipe with the same
     * name but a lower version already installed and the assigned state
     * of the recipe is `UPDATED`, then the recipe is updated to
     * the new version.
     * Script Working Directories
     * Each script or execution step is run in its own temporary directory which
     * is deleted after completing the step.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.SoftwareRecipe}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.SoftwareRecipe)
        com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder.class);
      }

      // Construct using com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        version_ = "";
        if (artifactsBuilder_ == null) {
          artifacts_ = java.util.Collections.emptyList();
        } else {
          artifacts_ = null;
          artifactsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (installStepsBuilder_ == null) {
          installSteps_ = java.util.Collections.emptyList();
        } else {
          installSteps_ = null;
          installStepsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (updateStepsBuilder_ == null) {
          updateSteps_ = java.util.Collections.emptyList();
        } else {
          updateSteps_ = null;
          updateStepsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        desiredState_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe result) {
        if (artifactsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            artifacts_ = java.util.Collections.unmodifiableList(artifacts_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.artifacts_ = artifacts_;
        } else {
          result.artifacts_ = artifactsBuilder_.build();
        }
        if (installStepsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            installSteps_ = java.util.Collections.unmodifiableList(installSteps_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.installSteps_ = installSteps_;
        } else {
          result.installSteps_ = installStepsBuilder_.build();
        }
        if (updateStepsBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            updateSteps_ = java.util.Collections.unmodifiableList(updateSteps_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.updateSteps_ = updateSteps_;
        } else {
          result.updateSteps_ = updateStepsBuilder_.build();
        }
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.version_ = version_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.desiredState_ = desiredState_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe) {
          return mergeFrom((com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.getDefaultInstance())
          return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (artifactsBuilder_ == null) {
          if (!other.artifacts_.isEmpty()) {
            if (artifacts_.isEmpty()) {
              artifacts_ = other.artifacts_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureArtifactsIsMutable();
              artifacts_.addAll(other.artifacts_);
            }
            onChanged();
          }
        } else {
          if (!other.artifacts_.isEmpty()) {
            if (artifactsBuilder_.isEmpty()) {
              artifactsBuilder_.dispose();
              artifactsBuilder_ = null;
              artifacts_ = other.artifacts_;
              bitField0_ = (bitField0_ & ~0x00000004);
              artifactsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getArtifactsFieldBuilder()
                      : null;
            } else {
              artifactsBuilder_.addAllMessages(other.artifacts_);
            }
          }
        }
        if (installStepsBuilder_ == null) {
          if (!other.installSteps_.isEmpty()) {
            if (installSteps_.isEmpty()) {
              installSteps_ = other.installSteps_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureInstallStepsIsMutable();
              installSteps_.addAll(other.installSteps_);
            }
            onChanged();
          }
        } else {
          if (!other.installSteps_.isEmpty()) {
            if (installStepsBuilder_.isEmpty()) {
              installStepsBuilder_.dispose();
              installStepsBuilder_ = null;
              installSteps_ = other.installSteps_;
              bitField0_ = (bitField0_ & ~0x00000008);
              installStepsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getInstallStepsFieldBuilder()
                      : null;
            } else {
              installStepsBuilder_.addAllMessages(other.installSteps_);
            }
          }
        }
        if (updateStepsBuilder_ == null) {
          if (!other.updateSteps_.isEmpty()) {
            if (updateSteps_.isEmpty()) {
              updateSteps_ = other.updateSteps_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureUpdateStepsIsMutable();
              updateSteps_.addAll(other.updateSteps_);
            }
            onChanged();
          }
        } else {
          if (!other.updateSteps_.isEmpty()) {
            if (updateStepsBuilder_.isEmpty()) {
              updateStepsBuilder_.dispose();
              updateStepsBuilder_ = null;
              updateSteps_ = other.updateSteps_;
              bitField0_ = (bitField0_ & ~0x00000010);
              updateStepsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getUpdateStepsFieldBuilder()
                      : null;
            } else {
              updateStepsBuilder_.addAllMessages(other.updateSteps_);
            }
          }
        }
        if (other.desiredState_ != 0) {
          setDesiredStateValue(other.getDesiredStateValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10:
                {
                  name_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              case 18:
                {
                  version_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
              case 26:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact m =
                      input.readMessage(
                          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                              .parser(),
                          extensionRegistry);
                  if (artifactsBuilder_ == null) {
                    ensureArtifactsIsMutable();
                    artifacts_.add(m);
                  } else {
                    artifactsBuilder_.addMessage(m);
                  }
                  break;
                } // case 26
              case 34:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step m =
                      input.readMessage(
                          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                              .parser(),
                          extensionRegistry);
                  if (installStepsBuilder_ == null) {
                    ensureInstallStepsIsMutable();
                    installSteps_.add(m);
                  } else {
                    installStepsBuilder_.addMessage(m);
                  }
                  break;
                } // case 34
              case 42:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step m =
                      input.readMessage(
                          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                              .parser(),
                          extensionRegistry);
                  if (updateStepsBuilder_ == null) {
                    ensureUpdateStepsIsMutable();
                    updateSteps_.add(m);
                  } else {
                    updateStepsBuilder_.addMessage(m);
                  }
                  break;
                } // case 42
              case 48:
                {
                  desiredState_ = input.readEnum();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 48
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       *
       *
       * <pre>
       * Required. Unique identifier for the recipe. Only one recipe with a given name is
       * installed on an instance.
       * Names are also used to identify resources which helps to determine whether
       * guest policies have conflicts. This means that requests to create multiple
       * recipes with the same name and version are rejected since they
       * could potentially have conflicting assignments.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Unique identifier for the recipe. Only one recipe with a given name is
       * installed on an instance.
       * Names are also used to identify resources which helps to determine whether
       * guest policies have conflicts. This means that requests to create multiple
       * recipes with the same name and version are rejected since they
       * could potentially have conflicting assignments.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Unique identifier for the recipe. Only one recipe with a given name is
       * installed on an instance.
       * Names are also used to identify resources which helps to determine whether
       * guest policies have conflicts. This means that requests to create multiple
       * recipes with the same name and version are rejected since they
       * could potentially have conflicting assignments.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Unique identifier for the recipe. Only one recipe with a given name is
       * installed on an instance.
       * Names are also used to identify resources which helps to determine whether
       * guest policies have conflicts. This means that requests to create multiple
       * recipes with the same name and version are rejected since they
       * could potentially have conflicting assignments.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Unique identifier for the recipe. Only one recipe with a given name is
       * installed on an instance.
       * Names are also used to identify resources which helps to determine whether
       * guest policies have conflicts. This means that requests to create multiple
       * recipes with the same name and version are rejected since they
       * could potentially have conflicting assignments.
       * </pre>
       *
       * <code>string name = 1 [(.google.api.field_behavior) = REQUIRED];</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();
        }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object version_ = "";
      /**
       *
       *
       * <pre>
       * The version of this software recipe. Version can be up to 4 period
       * separated numbers (e.g. 12.34.56.78).
       * </pre>
       *
       * <code>string version = 2;</code>
       *
       * @return The version.
       */
      public java.lang.String getVersion() {
        java.lang.Object ref = version_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * The version of this software recipe. Version can be up to 4 period
       * separated numbers (e.g. 12.34.56.78).
       * </pre>
       *
       * <code>string version = 2;</code>
       *
       * @return The bytes for version.
       */
      public com.google.protobuf.ByteString getVersionBytes() {
        java.lang.Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * The version of this software recipe. Version can be up to 4 period
       * separated numbers (e.g. 12.34.56.78).
       * </pre>
       *
       * <code>string version = 2;</code>
       *
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        version_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The version of this software recipe. Version can be up to 4 period
       * separated numbers (e.g. 12.34.56.78).
       * </pre>
       *
       * <code>string version = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        version_ = getDefaultInstance().getVersion();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The version of this software recipe. Version can be up to 4 period
       * separated numbers (e.g. 12.34.56.78).
       * </pre>
       *
       * <code>string version = 2;</code>
       *
       * @param value The bytes for version to set.
       * @return This builder for chaining.
       */
      public Builder setVersionBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        version_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact>
          artifacts_ = java.util.Collections.emptyList();

      private void ensureArtifactsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          artifacts_ =
              new java.util.ArrayList<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact>(
                  artifacts_);
          bitField0_ |= 0x00000004;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.ArtifactOrBuilder>
          artifactsBuilder_;

      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact>
          getArtifactsList() {
        if (artifactsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(artifacts_);
        } else {
          return artifactsBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public int getArtifactsCount() {
        if (artifactsBuilder_ == null) {
          return artifacts_.size();
        } else {
          return artifactsBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact getArtifacts(
          int index) {
        if (artifactsBuilder_ == null) {
          return artifacts_.get(index);
        } else {
          return artifactsBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public Builder setArtifacts(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact value) {
        if (artifactsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArtifactsIsMutable();
          artifacts_.set(index, value);
          onChanged();
        } else {
          artifactsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public Builder setArtifacts(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder
              builderForValue) {
        if (artifactsBuilder_ == null) {
          ensureArtifactsIsMutable();
          artifacts_.set(index, builderForValue.build());
          onChanged();
        } else {
          artifactsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public Builder addArtifacts(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact value) {
        if (artifactsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArtifactsIsMutable();
          artifacts_.add(value);
          onChanged();
        } else {
          artifactsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public Builder addArtifacts(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact value) {
        if (artifactsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArtifactsIsMutable();
          artifacts_.add(index, value);
          onChanged();
        } else {
          artifactsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public Builder addArtifacts(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder
              builderForValue) {
        if (artifactsBuilder_ == null) {
          ensureArtifactsIsMutable();
          artifacts_.add(builderForValue.build());
          onChanged();
        } else {
          artifactsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public Builder addArtifacts(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder
              builderForValue) {
        if (artifactsBuilder_ == null) {
          ensureArtifactsIsMutable();
          artifacts_.add(index, builderForValue.build());
          onChanged();
        } else {
          artifactsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public Builder addAllArtifacts(
          java.lang.Iterable<
                  ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact>
              values) {
        if (artifactsBuilder_ == null) {
          ensureArtifactsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, artifacts_);
          onChanged();
        } else {
          artifactsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public Builder clearArtifacts() {
        if (artifactsBuilder_ == null) {
          artifacts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          artifactsBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public Builder removeArtifacts(int index) {
        if (artifactsBuilder_ == null) {
          ensureArtifactsIsMutable();
          artifacts_.remove(index);
          onChanged();
        } else {
          artifactsBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder
          getArtifactsBuilder(int index) {
        return getArtifactsFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.ArtifactOrBuilder
          getArtifactsOrBuilder(int index) {
        if (artifactsBuilder_ == null) {
          return artifacts_.get(index);
        } else {
          return artifactsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public java.util.List<
              ? extends
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.ArtifactOrBuilder>
          getArtifactsOrBuilderList() {
        if (artifactsBuilder_ != null) {
          return artifactsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(artifacts_);
        }
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder
          addArtifactsBuilder() {
        return getArtifactsFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder
          addArtifactsBuilder(int index) {
        return getArtifactsFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Resources available to be used in the steps in the recipe.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Artifact artifacts = 3;</code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder>
          getArtifactsBuilderList() {
        return getArtifactsFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.ArtifactOrBuilder>
          getArtifactsFieldBuilder() {
        if (artifactsBuilder_ == null) {
          artifactsBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Artifact.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.ArtifactOrBuilder>(
                  artifacts_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
          artifacts_ = null;
        }
        return artifactsBuilder_;
      }

      private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
          installSteps_ = java.util.Collections.emptyList();

      private void ensureInstallStepsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          installSteps_ =
              new java.util.ArrayList<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>(
                  installSteps_);
          bitField0_ |= 0x00000008;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>
          installStepsBuilder_;

      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
          getInstallStepsList() {
        if (installStepsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(installSteps_);
        } else {
          return installStepsBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public int getInstallStepsCount() {
        if (installStepsBuilder_ == null) {
          return installSteps_.size();
        } else {
          return installStepsBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step getInstallSteps(
          int index) {
        if (installStepsBuilder_ == null) {
          return installSteps_.get(index);
        } else {
          return installStepsBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public Builder setInstallSteps(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step value) {
        if (installStepsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstallStepsIsMutable();
          installSteps_.set(index, value);
          onChanged();
        } else {
          installStepsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public Builder setInstallSteps(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
              builderForValue) {
        if (installStepsBuilder_ == null) {
          ensureInstallStepsIsMutable();
          installSteps_.set(index, builderForValue.build());
          onChanged();
        } else {
          installStepsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public Builder addInstallSteps(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step value) {
        if (installStepsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstallStepsIsMutable();
          installSteps_.add(value);
          onChanged();
        } else {
          installStepsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public Builder addInstallSteps(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step value) {
        if (installStepsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInstallStepsIsMutable();
          installSteps_.add(index, value);
          onChanged();
        } else {
          installStepsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public Builder addInstallSteps(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
              builderForValue) {
        if (installStepsBuilder_ == null) {
          ensureInstallStepsIsMutable();
          installSteps_.add(builderForValue.build());
          onChanged();
        } else {
          installStepsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public Builder addInstallSteps(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
              builderForValue) {
        if (installStepsBuilder_ == null) {
          ensureInstallStepsIsMutable();
          installSteps_.add(index, builderForValue.build());
          onChanged();
        } else {
          installStepsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public Builder addAllInstallSteps(
          java.lang.Iterable<
                  ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
              values) {
        if (installStepsBuilder_ == null) {
          ensureInstallStepsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, installSteps_);
          onChanged();
        } else {
          installStepsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public Builder clearInstallSteps() {
        if (installStepsBuilder_ == null) {
          installSteps_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          installStepsBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public Builder removeInstallSteps(int index) {
        if (installStepsBuilder_ == null) {
          ensureInstallStepsIsMutable();
          installSteps_.remove(index);
          onChanged();
        } else {
          installStepsBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
          getInstallStepsBuilder(int index) {
        return getInstallStepsFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder
          getInstallStepsOrBuilder(int index) {
        if (installStepsBuilder_ == null) {
          return installSteps_.get(index);
        } else {
          return installStepsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public java.util.List<
              ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>
          getInstallStepsOrBuilderList() {
        if (installStepsBuilder_ != null) {
          return installStepsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(installSteps_);
        }
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
          addInstallStepsBuilder() {
        return getInstallStepsFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
          addInstallStepsBuilder(int index) {
        return getInstallStepsFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for installing this recipe. On failure it stops
       * executing steps and does not attempt another installation. Any steps taken
       * (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step install_steps = 4;</code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder>
          getInstallStepsBuilderList() {
        return getInstallStepsFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>
          getInstallStepsFieldBuilder() {
        if (installStepsBuilder_ == null) {
          installStepsBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>(
                  installSteps_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          installSteps_ = null;
        }
        return installStepsBuilder_;
      }

      private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
          updateSteps_ = java.util.Collections.emptyList();

      private void ensureUpdateStepsIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          updateSteps_ =
              new java.util.ArrayList<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>(updateSteps_);
          bitField0_ |= 0x00000010;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>
          updateStepsBuilder_;

      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
          getUpdateStepsList() {
        if (updateStepsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(updateSteps_);
        } else {
          return updateStepsBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public int getUpdateStepsCount() {
        if (updateStepsBuilder_ == null) {
          return updateSteps_.size();
        } else {
          return updateStepsBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step getUpdateSteps(
          int index) {
        if (updateStepsBuilder_ == null) {
          return updateSteps_.get(index);
        } else {
          return updateStepsBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public Builder setUpdateSteps(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step value) {
        if (updateStepsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUpdateStepsIsMutable();
          updateSteps_.set(index, value);
          onChanged();
        } else {
          updateStepsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public Builder setUpdateSteps(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
              builderForValue) {
        if (updateStepsBuilder_ == null) {
          ensureUpdateStepsIsMutable();
          updateSteps_.set(index, builderForValue.build());
          onChanged();
        } else {
          updateStepsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public Builder addUpdateSteps(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step value) {
        if (updateStepsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUpdateStepsIsMutable();
          updateSteps_.add(value);
          onChanged();
        } else {
          updateStepsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public Builder addUpdateSteps(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step value) {
        if (updateStepsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUpdateStepsIsMutable();
          updateSteps_.add(index, value);
          onChanged();
        } else {
          updateStepsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public Builder addUpdateSteps(
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
              builderForValue) {
        if (updateStepsBuilder_ == null) {
          ensureUpdateStepsIsMutable();
          updateSteps_.add(builderForValue.build());
          onChanged();
        } else {
          updateStepsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public Builder addUpdateSteps(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
              builderForValue) {
        if (updateStepsBuilder_ == null) {
          ensureUpdateStepsIsMutable();
          updateSteps_.add(index, builderForValue.build());
          onChanged();
        } else {
          updateStepsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public Builder addAllUpdateSteps(
          java.lang.Iterable<
                  ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step>
              values) {
        if (updateStepsBuilder_ == null) {
          ensureUpdateStepsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, updateSteps_);
          onChanged();
        } else {
          updateStepsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public Builder clearUpdateSteps() {
        if (updateStepsBuilder_ == null) {
          updateSteps_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          updateStepsBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public Builder removeUpdateSteps(int index) {
        if (updateStepsBuilder_ == null) {
          ensureUpdateStepsIsMutable();
          updateSteps_.remove(index);
          onChanged();
        } else {
          updateStepsBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
          getUpdateStepsBuilder(int index) {
        return getUpdateStepsFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder
          getUpdateStepsOrBuilder(int index) {
        if (updateStepsBuilder_ == null) {
          return updateSteps_.get(index);
        } else {
          return updateStepsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public java.util.List<
              ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>
          getUpdateStepsOrBuilderList() {
        if (updateStepsBuilder_ != null) {
          return updateStepsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(updateSteps_);
        }
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
          addUpdateStepsBuilder() {
        return getUpdateStepsFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder
          addUpdateStepsBuilder(int index) {
        return getUpdateStepsFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Actions to be taken for updating this recipe. On failure it stops
       * executing steps and  does not attempt another update for this recipe. Any
       * steps taken (including partially completed steps) are not rolled back.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.SoftwareRecipe.Step update_steps = 5;</code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder>
          getUpdateStepsBuilderList() {
        return getUpdateStepsFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>
          getUpdateStepsFieldBuilder() {
        if (updateStepsBuilder_ == null) {
          updateStepsBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Step.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.StepOrBuilder>(
                  updateSteps_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          updateSteps_ = null;
        }
        return updateStepsBuilder_;
      }

      private int desiredState_ = 0;
      /**
       *
       *
       * <pre>
       * Default is INSTALLED. The desired state the agent should maintain for this
       * recipe.
       * INSTALLED: The software recipe is installed on the instance but
       *            won't be updated to new versions.
       * UPDATED: The software recipe is installed on the instance. The recipe is
       *          updated to a higher version, if a higher version of the recipe is
       *          assigned to this instance.
       * REMOVE: Remove is unsupported for software recipes and attempts to
       *         create or update a recipe to the REMOVE state is rejected.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 6;</code>
       *
       * @return The enum numeric value on the wire for desiredState.
       */
      @java.lang.Override
      public int getDesiredStateValue() {
        return desiredState_;
      }
      /**
       *
       *
       * <pre>
       * Default is INSTALLED. The desired state the agent should maintain for this
       * recipe.
       * INSTALLED: The software recipe is installed on the instance but
       *            won't be updated to new versions.
       * UPDATED: The software recipe is installed on the instance. The recipe is
       *          updated to a higher version, if a higher version of the recipe is
       *          assigned to this instance.
       * REMOVE: Remove is unsupported for software recipes and attempts to
       *         create or update a recipe to the REMOVE state is rejected.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 6;</code>
       *
       * @param value The enum numeric value on the wire for desiredState to set.
       * @return This builder for chaining.
       */
      public Builder setDesiredStateValue(int value) {
        desiredState_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Default is INSTALLED. The desired state the agent should maintain for this
       * recipe.
       * INSTALLED: The software recipe is installed on the instance but
       *            won't be updated to new versions.
       * UPDATED: The software recipe is installed on the instance. The recipe is
       *          updated to a higher version, if a higher version of the recipe is
       *          assigned to this instance.
       * REMOVE: Remove is unsupported for software recipes and attempts to
       *         create or update a recipe to the REMOVE state is rejected.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 6;</code>
       *
       * @return The desiredState.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState getDesiredState() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState result =
            com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.forNumber(desiredState_);
        return result == null
            ? com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState.UNRECOGNIZED
            : result;
      }
      /**
       *
       *
       * <pre>
       * Default is INSTALLED. The desired state the agent should maintain for this
       * recipe.
       * INSTALLED: The software recipe is installed on the instance but
       *            won't be updated to new versions.
       * UPDATED: The software recipe is installed on the instance. The recipe is
       *          updated to a higher version, if a higher version of the recipe is
       *          assigned to this instance.
       * REMOVE: Remove is unsupported for software recipes and attempts to
       *         create or update a recipe to the REMOVE state is rejected.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 6;</code>
       *
       * @param value The desiredState to set.
       * @return This builder for chaining.
       */
      public Builder setDesiredState(
          com.google.cloud.osconfig.v1beta.GuestPolicies.DesiredState value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000020;
        desiredState_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Default is INSTALLED. The desired state the agent should maintain for this
       * recipe.
       * INSTALLED: The software recipe is installed on the instance but
       *            won't be updated to new versions.
       * UPDATED: The software recipe is installed on the instance. The recipe is
       *          updated to a higher version, if a higher version of the recipe is
       *          assigned to this instance.
       * REMOVE: Remove is unsupported for software recipes and attempts to
       *         create or update a recipe to the REMOVE state is rejected.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.DesiredState desired_state = 6;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearDesiredState() {
        bitField0_ = (bitField0_ & ~0x00000020);
        desiredState_ = 0;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.SoftwareRecipe)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.SoftwareRecipe)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface CreateGuestPolicyRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.CreateGuestPolicyRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. The resource name of the parent using one of the following forms:
     * `projects/{project_number}`.
     * </pre>
     *
     * <code>
     * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The parent.
     */
    java.lang.String getParent();
    /**
     *
     *
     * <pre>
     * Required. The resource name of the parent using one of the following forms:
     * `projects/{project_number}`.
     * </pre>
     *
     * <code>
     * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The bytes for parent.
     */
    com.google.protobuf.ByteString getParentBytes();

    /**
     *
     *
     * <pre>
     * Required. The logical name of the guest policy in the project
     * with the following restrictions:
     * * Must contain only lowercase letters, numbers, and hyphens.
     * * Must start with a letter.
     * * Must be between 1-63 characters.
     * * Must end with a number or a letter.
     * * Must be unique within the project.
     * </pre>
     *
     * <code>string guest_policy_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The guestPolicyId.
     */
    java.lang.String getGuestPolicyId();
    /**
     *
     *
     * <pre>
     * Required. The logical name of the guest policy in the project
     * with the following restrictions:
     * * Must contain only lowercase letters, numbers, and hyphens.
     * * Must start with a letter.
     * * Must be between 1-63 characters.
     * * Must end with a number or a letter.
     * * Must be unique within the project.
     * </pre>
     *
     * <code>string guest_policy_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for guestPolicyId.
     */
    com.google.protobuf.ByteString getGuestPolicyIdBytes();

    /**
     *
     *
     * <pre>
     * Required. The GuestPolicy to create.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return Whether the guestPolicy field is set.
     */
    boolean hasGuestPolicy();
    /**
     *
     *
     * <pre>
     * Required. The GuestPolicy to create.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return The guestPolicy.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getGuestPolicy();
    /**
     *
     *
     * <pre>
     * Required. The GuestPolicy to create.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder getGuestPolicyOrBuilder();
  }
  /**
   *
   *
   * <pre>
   * A request message for creating a guest policy.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.CreateGuestPolicyRequest}
   */
  public static final class CreateGuestPolicyRequest extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.CreateGuestPolicyRequest)
      CreateGuestPolicyRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use CreateGuestPolicyRequest.newBuilder() to construct.
    private CreateGuestPolicyRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private CreateGuestPolicyRequest() {
      parent_ = "";
      guestPolicyId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new CreateGuestPolicyRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_CreateGuestPolicyRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_CreateGuestPolicyRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest.Builder
                  .class);
    }

    public static final int PARENT_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object parent_ = "";
    /**
     *
     *
     * <pre>
     * Required. The resource name of the parent using one of the following forms:
     * `projects/{project_number}`.
     * </pre>
     *
     * <code>
     * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The parent.
     */
    @java.lang.Override
    public java.lang.String getParent() {
      java.lang.Object ref = parent_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        parent_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The resource name of the parent using one of the following forms:
     * `projects/{project_number}`.
     * </pre>
     *
     * <code>
     * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The bytes for parent.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getParentBytes() {
      java.lang.Object ref = parent_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        parent_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GUEST_POLICY_ID_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private volatile java.lang.Object guestPolicyId_ = "";
    /**
     *
     *
     * <pre>
     * Required. The logical name of the guest policy in the project
     * with the following restrictions:
     * * Must contain only lowercase letters, numbers, and hyphens.
     * * Must start with a letter.
     * * Must be between 1-63 characters.
     * * Must end with a number or a letter.
     * * Must be unique within the project.
     * </pre>
     *
     * <code>string guest_policy_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The guestPolicyId.
     */
    @java.lang.Override
    public java.lang.String getGuestPolicyId() {
      java.lang.Object ref = guestPolicyId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        guestPolicyId_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The logical name of the guest policy in the project
     * with the following restrictions:
     * * Must contain only lowercase letters, numbers, and hyphens.
     * * Must start with a letter.
     * * Must be between 1-63 characters.
     * * Must end with a number or a letter.
     * * Must be unique within the project.
     * </pre>
     *
     * <code>string guest_policy_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for guestPolicyId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getGuestPolicyIdBytes() {
      java.lang.Object ref = guestPolicyId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        guestPolicyId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GUEST_POLICY_FIELD_NUMBER = 3;
    private com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy guestPolicy_;
    /**
     *
     *
     * <pre>
     * Required. The GuestPolicy to create.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return Whether the guestPolicy field is set.
     */
    @java.lang.Override
    public boolean hasGuestPolicy() {
      return guestPolicy_ != null;
    }
    /**
     *
     *
     * <pre>
     * Required. The GuestPolicy to create.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return The guestPolicy.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getGuestPolicy() {
      return guestPolicy_ == null
          ? com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance()
          : guestPolicy_;
    }
    /**
     *
     *
     * <pre>
     * Required. The GuestPolicy to create.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder
        getGuestPolicyOrBuilder() {
      return guestPolicy_ == null
          ? com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance()
          : guestPolicy_;
    }

    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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, parent_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(guestPolicyId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, guestPolicyId_);
      }
      if (guestPolicy_ != null) {
        output.writeMessage(3, getGuestPolicy());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, parent_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(guestPolicyId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, guestPolicyId_);
      }
      if (guestPolicy_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getGuestPolicy());
      }
      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 com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest) obj;

      if (!getParent().equals(other.getParent())) return false;
      if (!getGuestPolicyId().equals(other.getGuestPolicyId())) return false;
      if (hasGuestPolicy() != other.hasGuestPolicy()) return false;
      if (hasGuestPolicy()) {
        if (!getGuestPolicy().equals(other.getGuestPolicy())) 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();
      hash = (37 * hash) + PARENT_FIELD_NUMBER;
      hash = (53 * hash) + getParent().hashCode();
      hash = (37 * hash) + GUEST_POLICY_ID_FIELD_NUMBER;
      hash = (53 * hash) + getGuestPolicyId().hashCode();
      if (hasGuestPolicy()) {
        hash = (37 * hash) + GUEST_POLICY_FIELD_NUMBER;
        hash = (53 * hash) + getGuestPolicy().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * A request message for creating a guest policy.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.CreateGuestPolicyRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.CreateGuestPolicyRequest)
        com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_CreateGuestPolicyRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_CreateGuestPolicyRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest.Builder
                    .class);
      }

      // Construct using
      // com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        parent_ = "";
        guestPolicyId_ = "";
        guestPolicy_ = null;
        if (guestPolicyBuilder_ != null) {
          guestPolicyBuilder_.dispose();
          guestPolicyBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_CreateGuestPolicyRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest
          buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.parent_ = parent_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.guestPolicyId_ = guestPolicyId_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.guestPolicy_ =
              guestPolicyBuilder_ == null ? guestPolicy_ : guestPolicyBuilder_.build();
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest) {
          return mergeFrom(
              (com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest
                .getDefaultInstance()) return this;
        if (!other.getParent().isEmpty()) {
          parent_ = other.parent_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getGuestPolicyId().isEmpty()) {
          guestPolicyId_ = other.guestPolicyId_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasGuestPolicy()) {
          mergeGuestPolicy(other.getGuestPolicy());
        }
        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:
                {
                  parent_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              case 18:
                {
                  guestPolicyId_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
              case 26:
                {
                  input.readMessage(getGuestPolicyFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.lang.Object parent_ = "";
      /**
       *
       *
       * <pre>
       * Required. The resource name of the parent using one of the following forms:
       * `projects/{project_number}`.
       * </pre>
       *
       * <code>
       * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return The parent.
       */
      public java.lang.String getParent() {
        java.lang.Object ref = parent_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          parent_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the parent using one of the following forms:
       * `projects/{project_number}`.
       * </pre>
       *
       * <code>
       * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return The bytes for parent.
       */
      public com.google.protobuf.ByteString getParentBytes() {
        java.lang.Object ref = parent_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          parent_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the parent using one of the following forms:
       * `projects/{project_number}`.
       * </pre>
       *
       * <code>
       * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @param value The parent to set.
       * @return This builder for chaining.
       */
      public Builder setParent(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        parent_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the parent using one of the following forms:
       * `projects/{project_number}`.
       * </pre>
       *
       * <code>
       * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearParent() {
        parent_ = getDefaultInstance().getParent();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the parent using one of the following forms:
       * `projects/{project_number}`.
       * </pre>
       *
       * <code>
       * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @param value The bytes for parent to set.
       * @return This builder for chaining.
       */
      public Builder setParentBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        parent_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object guestPolicyId_ = "";
      /**
       *
       *
       * <pre>
       * Required. The logical name of the guest policy in the project
       * with the following restrictions:
       * * Must contain only lowercase letters, numbers, and hyphens.
       * * Must start with a letter.
       * * Must be between 1-63 characters.
       * * Must end with a number or a letter.
       * * Must be unique within the project.
       * </pre>
       *
       * <code>string guest_policy_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The guestPolicyId.
       */
      public java.lang.String getGuestPolicyId() {
        java.lang.Object ref = guestPolicyId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          guestPolicyId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The logical name of the guest policy in the project
       * with the following restrictions:
       * * Must contain only lowercase letters, numbers, and hyphens.
       * * Must start with a letter.
       * * Must be between 1-63 characters.
       * * Must end with a number or a letter.
       * * Must be unique within the project.
       * </pre>
       *
       * <code>string guest_policy_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for guestPolicyId.
       */
      public com.google.protobuf.ByteString getGuestPolicyIdBytes() {
        java.lang.Object ref = guestPolicyId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          guestPolicyId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The logical name of the guest policy in the project
       * with the following restrictions:
       * * Must contain only lowercase letters, numbers, and hyphens.
       * * Must start with a letter.
       * * Must be between 1-63 characters.
       * * Must end with a number or a letter.
       * * Must be unique within the project.
       * </pre>
       *
       * <code>string guest_policy_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The guestPolicyId to set.
       * @return This builder for chaining.
       */
      public Builder setGuestPolicyId(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        guestPolicyId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The logical name of the guest policy in the project
       * with the following restrictions:
       * * Must contain only lowercase letters, numbers, and hyphens.
       * * Must start with a letter.
       * * Must be between 1-63 characters.
       * * Must end with a number or a letter.
       * * Must be unique within the project.
       * </pre>
       *
       * <code>string guest_policy_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearGuestPolicyId() {
        guestPolicyId_ = getDefaultInstance().getGuestPolicyId();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The logical name of the guest policy in the project
       * with the following restrictions:
       * * Must contain only lowercase letters, numbers, and hyphens.
       * * Must start with a letter.
       * * Must be between 1-63 characters.
       * * Must end with a number or a letter.
       * * Must be unique within the project.
       * </pre>
       *
       * <code>string guest_policy_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes for guestPolicyId to set.
       * @return This builder for chaining.
       */
      public Builder setGuestPolicyIdBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        guestPolicyId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy guestPolicy_;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>
          guestPolicyBuilder_;
      /**
       *
       *
       * <pre>
       * Required. The GuestPolicy to create.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       *
       * @return Whether the guestPolicy field is set.
       */
      public boolean hasGuestPolicy() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       *
       *
       * <pre>
       * Required. The GuestPolicy to create.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       *
       * @return The guestPolicy.
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getGuestPolicy() {
        if (guestPolicyBuilder_ == null) {
          return guestPolicy_ == null
              ? com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance()
              : guestPolicy_;
        } else {
          return guestPolicyBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The GuestPolicy to create.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder setGuestPolicy(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy value) {
        if (guestPolicyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          guestPolicy_ = value;
        } else {
          guestPolicyBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The GuestPolicy to create.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder setGuestPolicy(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder builderForValue) {
        if (guestPolicyBuilder_ == null) {
          guestPolicy_ = builderForValue.build();
        } else {
          guestPolicyBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The GuestPolicy to create.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder mergeGuestPolicy(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy value) {
        if (guestPolicyBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)
              && guestPolicy_ != null
              && guestPolicy_
                  != com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy
                      .getDefaultInstance()) {
            getGuestPolicyBuilder().mergeFrom(value);
          } else {
            guestPolicy_ = value;
          }
        } else {
          guestPolicyBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The GuestPolicy to create.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder clearGuestPolicy() {
        bitField0_ = (bitField0_ & ~0x00000004);
        guestPolicy_ = null;
        if (guestPolicyBuilder_ != null) {
          guestPolicyBuilder_.dispose();
          guestPolicyBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The GuestPolicy to create.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder
          getGuestPolicyBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getGuestPolicyFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Required. The GuestPolicy to create.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder
          getGuestPolicyOrBuilder() {
        if (guestPolicyBuilder_ != null) {
          return guestPolicyBuilder_.getMessageOrBuilder();
        } else {
          return guestPolicy_ == null
              ? com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance()
              : guestPolicy_;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The GuestPolicy to create.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 3 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>
          getGuestPolicyFieldBuilder() {
        if (guestPolicyBuilder_ == null) {
          guestPolicyBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>(
                  getGuestPolicy(), getParentForChildren(), isClean());
          guestPolicy_ = null;
        }
        return guestPolicyBuilder_;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.CreateGuestPolicyRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.CreateGuestPolicyRequest)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.CreateGuestPolicyRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface GetGuestPolicyRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.GetGuestPolicyRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. The resource name of the guest policy using one of the following forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>
     * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The name.
     */
    java.lang.String getName();
    /**
     *
     *
     * <pre>
     * Required. The resource name of the guest policy using one of the following forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>
     * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString getNameBytes();
  }
  /**
   *
   *
   * <pre>
   * A request message for retrieving a guest policy.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.GetGuestPolicyRequest}
   */
  public static final class GetGuestPolicyRequest extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.GetGuestPolicyRequest)
      GetGuestPolicyRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use GetGuestPolicyRequest.newBuilder() to construct.
    private GetGuestPolicyRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private GetGuestPolicyRequest() {
      name_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new GetGuestPolicyRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_GetGuestPolicyRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_GetGuestPolicyRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     *
     *
     * <pre>
     * Required. The resource name of the guest policy using one of the following forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>
     * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </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();
        name_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The resource name of the guest policy using one of the following forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>
     * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest) obj;

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

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

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * A request message for retrieving a guest policy.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.GetGuestPolicyRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.GetGuestPolicyRequest)
        com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_GetGuestPolicyRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_GetGuestPolicyRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest.Builder.class);
      }

      // Construct using
      // com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest.newBuilder()
      private Builder() {}

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_GetGuestPolicyRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest) {
          return mergeFrom(
              (com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest
                .getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       *
       *
       * <pre>
       * Required. The resource name of the guest policy using one of the following forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>
       * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </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();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the guest policy using one of the following forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>
       * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the guest policy using one of the following forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>
       * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the guest policy using one of the following forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>
       * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the guest policy using one of the following forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>
       * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </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();
        }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.GetGuestPolicyRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.GetGuestPolicyRequest)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GetGuestPolicyRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface ListGuestPoliciesRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.ListGuestPoliciesRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. The resource name of the parent using one of the following forms:
     * `projects/{project_number}`.
     * </pre>
     *
     * <code>
     * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The parent.
     */
    java.lang.String getParent();
    /**
     *
     *
     * <pre>
     * Required. The resource name of the parent using one of the following forms:
     * `projects/{project_number}`.
     * </pre>
     *
     * <code>
     * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The bytes for parent.
     */
    com.google.protobuf.ByteString getParentBytes();

    /**
     *
     *
     * <pre>
     * The maximum number of guest policies to return.
     * </pre>
     *
     * <code>int32 page_size = 2;</code>
     *
     * @return The pageSize.
     */
    int getPageSize();

    /**
     *
     *
     * <pre>
     * A pagination token returned from a previous call to `ListGuestPolicies`
     * that indicates where this listing should continue from.
     * </pre>
     *
     * <code>string page_token = 3;</code>
     *
     * @return The pageToken.
     */
    java.lang.String getPageToken();
    /**
     *
     *
     * <pre>
     * A pagination token returned from a previous call to `ListGuestPolicies`
     * that indicates where this listing should continue from.
     * </pre>
     *
     * <code>string page_token = 3;</code>
     *
     * @return The bytes for pageToken.
     */
    com.google.protobuf.ByteString getPageTokenBytes();
  }
  /**
   *
   *
   * <pre>
   * A request message for listing guest policies.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.ListGuestPoliciesRequest}
   */
  public static final class ListGuestPoliciesRequest extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.ListGuestPoliciesRequest)
      ListGuestPoliciesRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use ListGuestPoliciesRequest.newBuilder() to construct.
    private ListGuestPoliciesRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private ListGuestPoliciesRequest() {
      parent_ = "";
      pageToken_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new ListGuestPoliciesRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest.Builder
                  .class);
    }

    public static final int PARENT_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object parent_ = "";
    /**
     *
     *
     * <pre>
     * Required. The resource name of the parent using one of the following forms:
     * `projects/{project_number}`.
     * </pre>
     *
     * <code>
     * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The parent.
     */
    @java.lang.Override
    public java.lang.String getParent() {
      java.lang.Object ref = parent_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        parent_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The resource name of the parent using one of the following forms:
     * `projects/{project_number}`.
     * </pre>
     *
     * <code>
     * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The bytes for parent.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getParentBytes() {
      java.lang.Object ref = parent_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        parent_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PAGE_SIZE_FIELD_NUMBER = 2;
    private int pageSize_ = 0;
    /**
     *
     *
     * <pre>
     * The maximum number of guest policies to return.
     * </pre>
     *
     * <code>int32 page_size = 2;</code>
     *
     * @return The pageSize.
     */
    @java.lang.Override
    public int getPageSize() {
      return pageSize_;
    }

    public static final int PAGE_TOKEN_FIELD_NUMBER = 3;

    @SuppressWarnings("serial")
    private volatile java.lang.Object pageToken_ = "";
    /**
     *
     *
     * <pre>
     * A pagination token returned from a previous call to `ListGuestPolicies`
     * that indicates where this listing should continue from.
     * </pre>
     *
     * <code>string page_token = 3;</code>
     *
     * @return The pageToken.
     */
    @java.lang.Override
    public java.lang.String getPageToken() {
      java.lang.Object ref = pageToken_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        pageToken_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * A pagination token returned from a previous call to `ListGuestPolicies`
     * that indicates where this listing should continue from.
     * </pre>
     *
     * <code>string page_token = 3;</code>
     *
     * @return The bytes for pageToken.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPageTokenBytes() {
      java.lang.Object ref = pageToken_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        pageToken_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, parent_);
      }
      if (pageSize_ != 0) {
        output.writeInt32(2, pageSize_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(pageToken_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, pageToken_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, parent_);
      }
      if (pageSize_ != 0) {
        size += com.google.protobuf.CodedOutputStream.computeInt32Size(2, pageSize_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(pageToken_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, pageToken_);
      }
      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 com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest) obj;

      if (!getParent().equals(other.getParent())) return false;
      if (getPageSize() != other.getPageSize()) return false;
      if (!getPageToken().equals(other.getPageToken())) 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();
      hash = (37 * hash) + PARENT_FIELD_NUMBER;
      hash = (53 * hash) + getParent().hashCode();
      hash = (37 * hash) + PAGE_SIZE_FIELD_NUMBER;
      hash = (53 * hash) + getPageSize();
      hash = (37 * hash) + PAGE_TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getPageToken().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * A request message for listing guest policies.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.ListGuestPoliciesRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.ListGuestPoliciesRequest)
        com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest.Builder
                    .class);
      }

      // Construct using
      // com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest.newBuilder()
      private Builder() {}

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest
          buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.parent_ = parent_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.pageSize_ = pageSize_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.pageToken_ = pageToken_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest) {
          return mergeFrom(
              (com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest
                .getDefaultInstance()) return this;
        if (!other.getParent().isEmpty()) {
          parent_ = other.parent_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.getPageSize() != 0) {
          setPageSize(other.getPageSize());
        }
        if (!other.getPageToken().isEmpty()) {
          pageToken_ = other.pageToken_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private int bitField0_;

      private java.lang.Object parent_ = "";
      /**
       *
       *
       * <pre>
       * Required. The resource name of the parent using one of the following forms:
       * `projects/{project_number}`.
       * </pre>
       *
       * <code>
       * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return The parent.
       */
      public java.lang.String getParent() {
        java.lang.Object ref = parent_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          parent_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the parent using one of the following forms:
       * `projects/{project_number}`.
       * </pre>
       *
       * <code>
       * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return The bytes for parent.
       */
      public com.google.protobuf.ByteString getParentBytes() {
        java.lang.Object ref = parent_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          parent_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the parent using one of the following forms:
       * `projects/{project_number}`.
       * </pre>
       *
       * <code>
       * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @param value The parent to set.
       * @return This builder for chaining.
       */
      public Builder setParent(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        parent_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the parent using one of the following forms:
       * `projects/{project_number}`.
       * </pre>
       *
       * <code>
       * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearParent() {
        parent_ = getDefaultInstance().getParent();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the parent using one of the following forms:
       * `projects/{project_number}`.
       * </pre>
       *
       * <code>
       * string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @param value The bytes for parent to set.
       * @return This builder for chaining.
       */
      public Builder setParentBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        parent_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private int pageSize_;
      /**
       *
       *
       * <pre>
       * The maximum number of guest policies to return.
       * </pre>
       *
       * <code>int32 page_size = 2;</code>
       *
       * @return The pageSize.
       */
      @java.lang.Override
      public int getPageSize() {
        return pageSize_;
      }
      /**
       *
       *
       * <pre>
       * The maximum number of guest policies to return.
       * </pre>
       *
       * <code>int32 page_size = 2;</code>
       *
       * @param value The pageSize to set.
       * @return This builder for chaining.
       */
      public Builder setPageSize(int value) {

        pageSize_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The maximum number of guest policies to return.
       * </pre>
       *
       * <code>int32 page_size = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPageSize() {
        bitField0_ = (bitField0_ & ~0x00000002);
        pageSize_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object pageToken_ = "";
      /**
       *
       *
       * <pre>
       * A pagination token returned from a previous call to `ListGuestPolicies`
       * that indicates where this listing should continue from.
       * </pre>
       *
       * <code>string page_token = 3;</code>
       *
       * @return The pageToken.
       */
      public java.lang.String getPageToken() {
        java.lang.Object ref = pageToken_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          pageToken_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * A pagination token returned from a previous call to `ListGuestPolicies`
       * that indicates where this listing should continue from.
       * </pre>
       *
       * <code>string page_token = 3;</code>
       *
       * @return The bytes for pageToken.
       */
      public com.google.protobuf.ByteString getPageTokenBytes() {
        java.lang.Object ref = pageToken_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          pageToken_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * A pagination token returned from a previous call to `ListGuestPolicies`
       * that indicates where this listing should continue from.
       * </pre>
       *
       * <code>string page_token = 3;</code>
       *
       * @param value The pageToken to set.
       * @return This builder for chaining.
       */
      public Builder setPageToken(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        pageToken_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * A pagination token returned from a previous call to `ListGuestPolicies`
       * that indicates where this listing should continue from.
       * </pre>
       *
       * <code>string page_token = 3;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearPageToken() {
        pageToken_ = getDefaultInstance().getPageToken();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * A pagination token returned from a previous call to `ListGuestPolicies`
       * that indicates where this listing should continue from.
       * </pre>
       *
       * <code>string page_token = 3;</code>
       *
       * @param value The bytes for pageToken to set.
       * @return This builder for chaining.
       */
      public Builder setPageTokenBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        pageToken_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.ListGuestPoliciesRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.ListGuestPoliciesRequest)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface ListGuestPoliciesResponseOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.ListGuestPoliciesResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * The list of GuestPolicies.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
     */
    java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy>
        getGuestPoliciesList();
    /**
     *
     *
     * <pre>
     * The list of GuestPolicies.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getGuestPolicies(int index);
    /**
     *
     *
     * <pre>
     * The list of GuestPolicies.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
     */
    int getGuestPoliciesCount();
    /**
     *
     *
     * <pre>
     * The list of GuestPolicies.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
     */
    java.util.List<? extends com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>
        getGuestPoliciesOrBuilderList();
    /**
     *
     *
     * <pre>
     * The list of GuestPolicies.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder getGuestPoliciesOrBuilder(
        int index);

    /**
     *
     *
     * <pre>
     * A pagination token that can be used to get the next page
     * of guest policies.
     * </pre>
     *
     * <code>string next_page_token = 2;</code>
     *
     * @return The nextPageToken.
     */
    java.lang.String getNextPageToken();
    /**
     *
     *
     * <pre>
     * A pagination token that can be used to get the next page
     * of guest policies.
     * </pre>
     *
     * <code>string next_page_token = 2;</code>
     *
     * @return The bytes for nextPageToken.
     */
    com.google.protobuf.ByteString getNextPageTokenBytes();
  }
  /**
   *
   *
   * <pre>
   * A response message for listing guest policies.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.ListGuestPoliciesResponse}
   */
  public static final class ListGuestPoliciesResponse extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.ListGuestPoliciesResponse)
      ListGuestPoliciesResponseOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use ListGuestPoliciesResponse.newBuilder() to construct.
    private ListGuestPoliciesResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private ListGuestPoliciesResponse() {
      guestPolicies_ = java.util.Collections.emptyList();
      nextPageToken_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new ListGuestPoliciesResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse.Builder
                  .class);
    }

    public static final int GUEST_POLICIES_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy>
        guestPolicies_;
    /**
     *
     *
     * <pre>
     * The list of GuestPolicies.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy>
        getGuestPoliciesList() {
      return guestPolicies_;
    }
    /**
     *
     *
     * <pre>
     * The list of GuestPolicies.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>
        getGuestPoliciesOrBuilderList() {
      return guestPolicies_;
    }
    /**
     *
     *
     * <pre>
     * The list of GuestPolicies.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
     */
    @java.lang.Override
    public int getGuestPoliciesCount() {
      return guestPolicies_.size();
    }
    /**
     *
     *
     * <pre>
     * The list of GuestPolicies.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getGuestPolicies(int index) {
      return guestPolicies_.get(index);
    }
    /**
     *
     *
     * <pre>
     * The list of GuestPolicies.
     * </pre>
     *
     * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder
        getGuestPoliciesOrBuilder(int index) {
      return guestPolicies_.get(index);
    }

    public static final int NEXT_PAGE_TOKEN_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private volatile java.lang.Object nextPageToken_ = "";
    /**
     *
     *
     * <pre>
     * A pagination token that can be used to get the next page
     * of guest policies.
     * </pre>
     *
     * <code>string next_page_token = 2;</code>
     *
     * @return The nextPageToken.
     */
    @java.lang.Override
    public java.lang.String getNextPageToken() {
      java.lang.Object ref = nextPageToken_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        nextPageToken_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * A pagination token that can be used to get the next page
     * of guest policies.
     * </pre>
     *
     * <code>string next_page_token = 2;</code>
     *
     * @return The bytes for nextPageToken.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getNextPageTokenBytes() {
      java.lang.Object ref = nextPageToken_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        nextPageToken_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      for (int i = 0; i < guestPolicies_.size(); i++) {
        output.writeMessage(1, guestPolicies_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nextPageToken_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, nextPageToken_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < guestPolicies_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, guestPolicies_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nextPageToken_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, nextPageToken_);
      }
      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 com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse) obj;

      if (!getGuestPoliciesList().equals(other.getGuestPoliciesList())) return false;
      if (!getNextPageToken().equals(other.getNextPageToken())) 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 (getGuestPoliciesCount() > 0) {
        hash = (37 * hash) + GUEST_POLICIES_FIELD_NUMBER;
        hash = (53 * hash) + getGuestPoliciesList().hashCode();
      }
      hash = (37 * hash) + NEXT_PAGE_TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getNextPageToken().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseFrom(java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseFrom(
            java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseFrom(com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * A response message for listing guest policies.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.ListGuestPoliciesResponse}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.ListGuestPoliciesResponse)
        com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse.Builder
                    .class);
      }

      // Construct using
      // com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse.newBuilder()
      private Builder() {}

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesResponse_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
          buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse result) {
        if (guestPoliciesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            guestPolicies_ = java.util.Collections.unmodifiableList(guestPolicies_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.guestPolicies_ = guestPolicies_;
        } else {
          result.guestPolicies_ = guestPoliciesBuilder_.build();
        }
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.nextPageToken_ = nextPageToken_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse) {
          return mergeFrom(
              (com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
                .getDefaultInstance()) return this;
        if (guestPoliciesBuilder_ == null) {
          if (!other.guestPolicies_.isEmpty()) {
            if (guestPolicies_.isEmpty()) {
              guestPolicies_ = other.guestPolicies_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureGuestPoliciesIsMutable();
              guestPolicies_.addAll(other.guestPolicies_);
            }
            onChanged();
          }
        } else {
          if (!other.guestPolicies_.isEmpty()) {
            if (guestPoliciesBuilder_.isEmpty()) {
              guestPoliciesBuilder_.dispose();
              guestPoliciesBuilder_ = null;
              guestPolicies_ = other.guestPolicies_;
              bitField0_ = (bitField0_ & ~0x00000001);
              guestPoliciesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getGuestPoliciesFieldBuilder()
                      : null;
            } else {
              guestPoliciesBuilder_.addAllMessages(other.guestPolicies_);
            }
          }
        }
        if (!other.getNextPageToken().isEmpty()) {
          nextPageToken_ = other.nextPageToken_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy m =
                      input.readMessage(
                          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.parser(),
                          extensionRegistry);
                  if (guestPoliciesBuilder_ == null) {
                    ensureGuestPoliciesIsMutable();
                    guestPolicies_.add(m);
                  } else {
                    guestPoliciesBuilder_.addMessage(m);
                  }
                  break;
                } // case 10
              case 18:
                {
                  nextPageToken_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy>
          guestPolicies_ = java.util.Collections.emptyList();

      private void ensureGuestPoliciesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          guestPolicies_ =
              new java.util.ArrayList<com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy>(
                  guestPolicies_);
          bitField0_ |= 0x00000001;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>
          guestPoliciesBuilder_;

      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy>
          getGuestPoliciesList() {
        if (guestPoliciesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(guestPolicies_);
        } else {
          return guestPoliciesBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public int getGuestPoliciesCount() {
        if (guestPoliciesBuilder_ == null) {
          return guestPolicies_.size();
        } else {
          return guestPoliciesBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getGuestPolicies(
          int index) {
        if (guestPoliciesBuilder_ == null) {
          return guestPolicies_.get(index);
        } else {
          return guestPoliciesBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public Builder setGuestPolicies(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy value) {
        if (guestPoliciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGuestPoliciesIsMutable();
          guestPolicies_.set(index, value);
          onChanged();
        } else {
          guestPoliciesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public Builder setGuestPolicies(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder builderForValue) {
        if (guestPoliciesBuilder_ == null) {
          ensureGuestPoliciesIsMutable();
          guestPolicies_.set(index, builderForValue.build());
          onChanged();
        } else {
          guestPoliciesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public Builder addGuestPolicies(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy value) {
        if (guestPoliciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGuestPoliciesIsMutable();
          guestPolicies_.add(value);
          onChanged();
        } else {
          guestPoliciesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public Builder addGuestPolicies(
          int index, com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy value) {
        if (guestPoliciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGuestPoliciesIsMutable();
          guestPolicies_.add(index, value);
          onChanged();
        } else {
          guestPoliciesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public Builder addGuestPolicies(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder builderForValue) {
        if (guestPoliciesBuilder_ == null) {
          ensureGuestPoliciesIsMutable();
          guestPolicies_.add(builderForValue.build());
          onChanged();
        } else {
          guestPoliciesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public Builder addGuestPolicies(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder builderForValue) {
        if (guestPoliciesBuilder_ == null) {
          ensureGuestPoliciesIsMutable();
          guestPolicies_.add(index, builderForValue.build());
          onChanged();
        } else {
          guestPoliciesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public Builder addAllGuestPolicies(
          java.lang.Iterable<? extends com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy>
              values) {
        if (guestPoliciesBuilder_ == null) {
          ensureGuestPoliciesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, guestPolicies_);
          onChanged();
        } else {
          guestPoliciesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public Builder clearGuestPolicies() {
        if (guestPoliciesBuilder_ == null) {
          guestPolicies_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          guestPoliciesBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public Builder removeGuestPolicies(int index) {
        if (guestPoliciesBuilder_ == null) {
          ensureGuestPoliciesIsMutable();
          guestPolicies_.remove(index);
          onChanged();
        } else {
          guestPoliciesBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder
          getGuestPoliciesBuilder(int index) {
        return getGuestPoliciesFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder
          getGuestPoliciesOrBuilder(int index) {
        if (guestPoliciesBuilder_ == null) {
          return guestPolicies_.get(index);
        } else {
          return guestPoliciesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public java.util.List<
              ? extends com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>
          getGuestPoliciesOrBuilderList() {
        if (guestPoliciesBuilder_ != null) {
          return guestPoliciesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(guestPolicies_);
        }
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder
          addGuestPoliciesBuilder() {
        return getGuestPoliciesFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder
          addGuestPoliciesBuilder(int index) {
        return getGuestPoliciesFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * The list of GuestPolicies.
       * </pre>
       *
       * <code>repeated .google.cloud.osconfig.v1beta.GuestPolicy guest_policies = 1;</code>
       */
      public java.util.List<com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder>
          getGuestPoliciesBuilderList() {
        return getGuestPoliciesFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>
          getGuestPoliciesFieldBuilder() {
        if (guestPoliciesBuilder_ == null) {
          guestPoliciesBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>(
                  guestPolicies_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          guestPolicies_ = null;
        }
        return guestPoliciesBuilder_;
      }

      private java.lang.Object nextPageToken_ = "";
      /**
       *
       *
       * <pre>
       * A pagination token that can be used to get the next page
       * of guest policies.
       * </pre>
       *
       * <code>string next_page_token = 2;</code>
       *
       * @return The nextPageToken.
       */
      public java.lang.String getNextPageToken() {
        java.lang.Object ref = nextPageToken_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          nextPageToken_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * A pagination token that can be used to get the next page
       * of guest policies.
       * </pre>
       *
       * <code>string next_page_token = 2;</code>
       *
       * @return The bytes for nextPageToken.
       */
      public com.google.protobuf.ByteString getNextPageTokenBytes() {
        java.lang.Object ref = nextPageToken_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          nextPageToken_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * A pagination token that can be used to get the next page
       * of guest policies.
       * </pre>
       *
       * <code>string next_page_token = 2;</code>
       *
       * @param value The nextPageToken to set.
       * @return This builder for chaining.
       */
      public Builder setNextPageToken(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        nextPageToken_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * A pagination token that can be used to get the next page
       * of guest policies.
       * </pre>
       *
       * <code>string next_page_token = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearNextPageToken() {
        nextPageToken_ = getDefaultInstance().getNextPageToken();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * A pagination token that can be used to get the next page
       * of guest policies.
       * </pre>
       *
       * <code>string next_page_token = 2;</code>
       *
       * @param value The bytes for nextPageToken to set.
       * @return This builder for chaining.
       */
      public Builder setNextPageTokenBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        nextPageToken_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.ListGuestPoliciesResponse)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.ListGuestPoliciesResponse)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.ListGuestPoliciesResponse
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface UpdateGuestPolicyRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.UpdateGuestPolicyRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. The updated GuestPolicy.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return Whether the guestPolicy field is set.
     */
    boolean hasGuestPolicy();
    /**
     *
     *
     * <pre>
     * Required. The updated GuestPolicy.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return The guestPolicy.
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getGuestPolicy();
    /**
     *
     *
     * <pre>
     * Required. The updated GuestPolicy.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder getGuestPolicyOrBuilder();

    /**
     *
     *
     * <pre>
     * Field mask that controls which fields of the guest policy should be
     * updated.
     * </pre>
     *
     * <code>.google.protobuf.FieldMask update_mask = 2;</code>
     *
     * @return Whether the updateMask field is set.
     */
    boolean hasUpdateMask();
    /**
     *
     *
     * <pre>
     * Field mask that controls which fields of the guest policy should be
     * updated.
     * </pre>
     *
     * <code>.google.protobuf.FieldMask update_mask = 2;</code>
     *
     * @return The updateMask.
     */
    com.google.protobuf.FieldMask getUpdateMask();
    /**
     *
     *
     * <pre>
     * Field mask that controls which fields of the guest policy should be
     * updated.
     * </pre>
     *
     * <code>.google.protobuf.FieldMask update_mask = 2;</code>
     */
    com.google.protobuf.FieldMaskOrBuilder getUpdateMaskOrBuilder();
  }
  /**
   *
   *
   * <pre>
   * A request message for updating a guest policy.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.UpdateGuestPolicyRequest}
   */
  public static final class UpdateGuestPolicyRequest extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.UpdateGuestPolicyRequest)
      UpdateGuestPolicyRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use UpdateGuestPolicyRequest.newBuilder() to construct.
    private UpdateGuestPolicyRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private UpdateGuestPolicyRequest() {}

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new UpdateGuestPolicyRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_UpdateGuestPolicyRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_UpdateGuestPolicyRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest.Builder
                  .class);
    }

    public static final int GUEST_POLICY_FIELD_NUMBER = 1;
    private com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy guestPolicy_;
    /**
     *
     *
     * <pre>
     * Required. The updated GuestPolicy.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return Whether the guestPolicy field is set.
     */
    @java.lang.Override
    public boolean hasGuestPolicy() {
      return guestPolicy_ != null;
    }
    /**
     *
     *
     * <pre>
     * Required. The updated GuestPolicy.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @return The guestPolicy.
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getGuestPolicy() {
      return guestPolicy_ == null
          ? com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance()
          : guestPolicy_;
    }
    /**
     *
     *
     * <pre>
     * Required. The updated GuestPolicy.
     * </pre>
     *
     * <code>
     * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder
        getGuestPolicyOrBuilder() {
      return guestPolicy_ == null
          ? com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance()
          : guestPolicy_;
    }

    public static final int UPDATE_MASK_FIELD_NUMBER = 2;
    private com.google.protobuf.FieldMask updateMask_;
    /**
     *
     *
     * <pre>
     * Field mask that controls which fields of the guest policy should be
     * updated.
     * </pre>
     *
     * <code>.google.protobuf.FieldMask update_mask = 2;</code>
     *
     * @return Whether the updateMask field is set.
     */
    @java.lang.Override
    public boolean hasUpdateMask() {
      return updateMask_ != null;
    }
    /**
     *
     *
     * <pre>
     * Field mask that controls which fields of the guest policy should be
     * updated.
     * </pre>
     *
     * <code>.google.protobuf.FieldMask update_mask = 2;</code>
     *
     * @return The updateMask.
     */
    @java.lang.Override
    public com.google.protobuf.FieldMask getUpdateMask() {
      return updateMask_ == null ? com.google.protobuf.FieldMask.getDefaultInstance() : updateMask_;
    }
    /**
     *
     *
     * <pre>
     * Field mask that controls which fields of the guest policy should be
     * updated.
     * </pre>
     *
     * <code>.google.protobuf.FieldMask update_mask = 2;</code>
     */
    @java.lang.Override
    public com.google.protobuf.FieldMaskOrBuilder getUpdateMaskOrBuilder() {
      return updateMask_ == null ? com.google.protobuf.FieldMask.getDefaultInstance() : updateMask_;
    }

    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 (guestPolicy_ != null) {
        output.writeMessage(1, getGuestPolicy());
      }
      if (updateMask_ != null) {
        output.writeMessage(2, getUpdateMask());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (guestPolicy_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getGuestPolicy());
      }
      if (updateMask_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getUpdateMask());
      }
      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 com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest) obj;

      if (hasGuestPolicy() != other.hasGuestPolicy()) return false;
      if (hasGuestPolicy()) {
        if (!getGuestPolicy().equals(other.getGuestPolicy())) return false;
      }
      if (hasUpdateMask() != other.hasUpdateMask()) return false;
      if (hasUpdateMask()) {
        if (!getUpdateMask().equals(other.getUpdateMask())) 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 (hasGuestPolicy()) {
        hash = (37 * hash) + GUEST_POLICY_FIELD_NUMBER;
        hash = (53 * hash) + getGuestPolicy().hashCode();
      }
      if (hasUpdateMask()) {
        hash = (37 * hash) + UPDATE_MASK_FIELD_NUMBER;
        hash = (53 * hash) + getUpdateMask().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * A request message for updating a guest policy.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.UpdateGuestPolicyRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.UpdateGuestPolicyRequest)
        com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_UpdateGuestPolicyRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_UpdateGuestPolicyRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest.Builder
                    .class);
      }

      // Construct using
      // com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        guestPolicy_ = null;
        if (guestPolicyBuilder_ != null) {
          guestPolicyBuilder_.dispose();
          guestPolicyBuilder_ = null;
        }
        updateMask_ = null;
        if (updateMaskBuilder_ != null) {
          updateMaskBuilder_.dispose();
          updateMaskBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_UpdateGuestPolicyRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest
          buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.guestPolicy_ =
              guestPolicyBuilder_ == null ? guestPolicy_ : guestPolicyBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.updateMask_ =
              updateMaskBuilder_ == null ? updateMask_ : updateMaskBuilder_.build();
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest) {
          return mergeFrom(
              (com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest
                .getDefaultInstance()) return this;
        if (other.hasGuestPolicy()) {
          mergeGuestPolicy(other.getGuestPolicy());
        }
        if (other.hasUpdateMask()) {
          mergeUpdateMask(other.getUpdateMask());
        }
        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(getGuestPolicyFieldBuilder().getBuilder(), extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              case 18:
                {
                  input.readMessage(getUpdateMaskFieldBuilder().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 com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy guestPolicy_;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>
          guestPolicyBuilder_;
      /**
       *
       *
       * <pre>
       * Required. The updated GuestPolicy.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       *
       * @return Whether the guestPolicy field is set.
       */
      public boolean hasGuestPolicy() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       *
       *
       * <pre>
       * Required. The updated GuestPolicy.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       *
       * @return The guestPolicy.
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy getGuestPolicy() {
        if (guestPolicyBuilder_ == null) {
          return guestPolicy_ == null
              ? com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance()
              : guestPolicy_;
        } else {
          return guestPolicyBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The updated GuestPolicy.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder setGuestPolicy(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy value) {
        if (guestPolicyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          guestPolicy_ = value;
        } else {
          guestPolicyBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The updated GuestPolicy.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder setGuestPolicy(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder builderForValue) {
        if (guestPolicyBuilder_ == null) {
          guestPolicy_ = builderForValue.build();
        } else {
          guestPolicyBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The updated GuestPolicy.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder mergeGuestPolicy(
          com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy value) {
        if (guestPolicyBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)
              && guestPolicy_ != null
              && guestPolicy_
                  != com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy
                      .getDefaultInstance()) {
            getGuestPolicyBuilder().mergeFrom(value);
          } else {
            guestPolicy_ = value;
          }
        } else {
          guestPolicyBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The updated GuestPolicy.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public Builder clearGuestPolicy() {
        bitField0_ = (bitField0_ & ~0x00000001);
        guestPolicy_ = null;
        if (guestPolicyBuilder_ != null) {
          guestPolicyBuilder_.dispose();
          guestPolicyBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The updated GuestPolicy.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder
          getGuestPolicyBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getGuestPolicyFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Required. The updated GuestPolicy.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder
          getGuestPolicyOrBuilder() {
        if (guestPolicyBuilder_ != null) {
          return guestPolicyBuilder_.getMessageOrBuilder();
        } else {
          return guestPolicy_ == null
              ? com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.getDefaultInstance()
              : guestPolicy_;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The updated GuestPolicy.
       * </pre>
       *
       * <code>
       * .google.cloud.osconfig.v1beta.GuestPolicy guest_policy = 1 [(.google.api.field_behavior) = REQUIRED];
       * </code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>
          getGuestPolicyFieldBuilder() {
        if (guestPolicyBuilder_ == null) {
          guestPolicyBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicy.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.GuestPolicyOrBuilder>(
                  getGuestPolicy(), getParentForChildren(), isClean());
          guestPolicy_ = null;
        }
        return guestPolicyBuilder_;
      }

      private com.google.protobuf.FieldMask updateMask_;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.FieldMask,
              com.google.protobuf.FieldMask.Builder,
              com.google.protobuf.FieldMaskOrBuilder>
          updateMaskBuilder_;
      /**
       *
       *
       * <pre>
       * Field mask that controls which fields of the guest policy should be
       * updated.
       * </pre>
       *
       * <code>.google.protobuf.FieldMask update_mask = 2;</code>
       *
       * @return Whether the updateMask field is set.
       */
      public boolean hasUpdateMask() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       *
       *
       * <pre>
       * Field mask that controls which fields of the guest policy should be
       * updated.
       * </pre>
       *
       * <code>.google.protobuf.FieldMask update_mask = 2;</code>
       *
       * @return The updateMask.
       */
      public com.google.protobuf.FieldMask getUpdateMask() {
        if (updateMaskBuilder_ == null) {
          return updateMask_ == null
              ? com.google.protobuf.FieldMask.getDefaultInstance()
              : updateMask_;
        } else {
          return updateMaskBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Field mask that controls which fields of the guest policy should be
       * updated.
       * </pre>
       *
       * <code>.google.protobuf.FieldMask update_mask = 2;</code>
       */
      public Builder setUpdateMask(com.google.protobuf.FieldMask value) {
        if (updateMaskBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          updateMask_ = value;
        } else {
          updateMaskBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Field mask that controls which fields of the guest policy should be
       * updated.
       * </pre>
       *
       * <code>.google.protobuf.FieldMask update_mask = 2;</code>
       */
      public Builder setUpdateMask(com.google.protobuf.FieldMask.Builder builderForValue) {
        if (updateMaskBuilder_ == null) {
          updateMask_ = builderForValue.build();
        } else {
          updateMaskBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Field mask that controls which fields of the guest policy should be
       * updated.
       * </pre>
       *
       * <code>.google.protobuf.FieldMask update_mask = 2;</code>
       */
      public Builder mergeUpdateMask(com.google.protobuf.FieldMask value) {
        if (updateMaskBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)
              && updateMask_ != null
              && updateMask_ != com.google.protobuf.FieldMask.getDefaultInstance()) {
            getUpdateMaskBuilder().mergeFrom(value);
          } else {
            updateMask_ = value;
          }
        } else {
          updateMaskBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Field mask that controls which fields of the guest policy should be
       * updated.
       * </pre>
       *
       * <code>.google.protobuf.FieldMask update_mask = 2;</code>
       */
      public Builder clearUpdateMask() {
        bitField0_ = (bitField0_ & ~0x00000002);
        updateMask_ = null;
        if (updateMaskBuilder_ != null) {
          updateMaskBuilder_.dispose();
          updateMaskBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Field mask that controls which fields of the guest policy should be
       * updated.
       * </pre>
       *
       * <code>.google.protobuf.FieldMask update_mask = 2;</code>
       */
      public com.google.protobuf.FieldMask.Builder getUpdateMaskBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getUpdateMaskFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Field mask that controls which fields of the guest policy should be
       * updated.
       * </pre>
       *
       * <code>.google.protobuf.FieldMask update_mask = 2;</code>
       */
      public com.google.protobuf.FieldMaskOrBuilder getUpdateMaskOrBuilder() {
        if (updateMaskBuilder_ != null) {
          return updateMaskBuilder_.getMessageOrBuilder();
        } else {
          return updateMask_ == null
              ? com.google.protobuf.FieldMask.getDefaultInstance()
              : updateMask_;
        }
      }
      /**
       *
       *
       * <pre>
       * Field mask that controls which fields of the guest policy should be
       * updated.
       * </pre>
       *
       * <code>.google.protobuf.FieldMask update_mask = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.FieldMask,
              com.google.protobuf.FieldMask.Builder,
              com.google.protobuf.FieldMaskOrBuilder>
          getUpdateMaskFieldBuilder() {
        if (updateMaskBuilder_ == null) {
          updateMaskBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.protobuf.FieldMask,
                  com.google.protobuf.FieldMask.Builder,
                  com.google.protobuf.FieldMaskOrBuilder>(
                  getUpdateMask(), getParentForChildren(), isClean());
          updateMask_ = null;
        }
        return updateMaskBuilder_;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.UpdateGuestPolicyRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.UpdateGuestPolicyRequest)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.UpdateGuestPolicyRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface DeleteGuestPolicyRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.DeleteGuestPolicyRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. The resource name of the guest policy  using one of the following forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>
     * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The name.
     */
    java.lang.String getName();
    /**
     *
     *
     * <pre>
     * Required. The resource name of the guest policy  using one of the following forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>
     * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString getNameBytes();
  }
  /**
   *
   *
   * <pre>
   * A request message for deleting a guest policy.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.DeleteGuestPolicyRequest}
   */
  public static final class DeleteGuestPolicyRequest extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.DeleteGuestPolicyRequest)
      DeleteGuestPolicyRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use DeleteGuestPolicyRequest.newBuilder() to construct.
    private DeleteGuestPolicyRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private DeleteGuestPolicyRequest() {
      name_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new DeleteGuestPolicyRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_DeleteGuestPolicyRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_DeleteGuestPolicyRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest.Builder
                  .class);
    }

    public static final int NAME_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     *
     *
     * <pre>
     * Required. The resource name of the guest policy  using one of the following forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>
     * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </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();
        name_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The resource name of the guest policy  using one of the following forms:
     * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
     * </pre>
     *
     * <code>
     * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
     * </code>
     *
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj
          instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest) obj;

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

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

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * A request message for deleting a guest policy.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.DeleteGuestPolicyRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.DeleteGuestPolicyRequest)
        com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_DeleteGuestPolicyRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_DeleteGuestPolicyRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest.Builder
                    .class);
      }

      // Construct using
      // com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest.newBuilder()
      private Builder() {}

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_DeleteGuestPolicyRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest
          buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest) {
          return mergeFrom(
              (com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest
                .getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       *
       *
       * <pre>
       * Required. The resource name of the guest policy  using one of the following forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>
       * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </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();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the guest policy  using one of the following forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>
       * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the guest policy  using one of the following forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>
       * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the guest policy  using one of the following forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>
       * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The resource name of the guest policy  using one of the following forms:
       * `projects/{project_number}/guestPolicies/{guest_policy_id}`.
       * </pre>
       *
       * <code>
       * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
       * </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();
        }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.DeleteGuestPolicyRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.DeleteGuestPolicyRequest)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.DeleteGuestPolicyRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface LookupEffectiveGuestPolicyRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.LookupEffectiveGuestPolicyRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. The VM instance whose policies are being looked up.
     * </pre>
     *
     * <code>string instance = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The instance.
     */
    java.lang.String getInstance();
    /**
     *
     *
     * <pre>
     * Required. The VM instance whose policies are being looked up.
     * </pre>
     *
     * <code>string instance = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for instance.
     */
    com.google.protobuf.ByteString getInstanceBytes();

    /**
     *
     *
     * <pre>
     * Short name of the OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * instance.
     * </pre>
     *
     * <code>string os_short_name = 2;</code>
     *
     * @return The osShortName.
     */
    java.lang.String getOsShortName();
    /**
     *
     *
     * <pre>
     * Short name of the OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * instance.
     * </pre>
     *
     * <code>string os_short_name = 2;</code>
     *
     * @return The bytes for osShortName.
     */
    com.google.protobuf.ByteString getOsShortNameBytes();

    /**
     *
     *
     * <pre>
     * Version of the OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * VM instance.
     * </pre>
     *
     * <code>string os_version = 3;</code>
     *
     * @return The osVersion.
     */
    java.lang.String getOsVersion();
    /**
     *
     *
     * <pre>
     * Version of the OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * VM instance.
     * </pre>
     *
     * <code>string os_version = 3;</code>
     *
     * @return The bytes for osVersion.
     */
    com.google.protobuf.ByteString getOsVersionBytes();

    /**
     *
     *
     * <pre>
     * Architecture of OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * instance.
     * </pre>
     *
     * <code>string os_architecture = 4;</code>
     *
     * @return The osArchitecture.
     */
    java.lang.String getOsArchitecture();
    /**
     *
     *
     * <pre>
     * Architecture of OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * instance.
     * </pre>
     *
     * <code>string os_architecture = 4;</code>
     *
     * @return The bytes for osArchitecture.
     */
    com.google.protobuf.ByteString getOsArchitectureBytes();
  }
  /**
   *
   *
   * <pre>
   * A request message for getting the effective guest policy assigned to the
   * instance.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.LookupEffectiveGuestPolicyRequest}
   */
  public static final class LookupEffectiveGuestPolicyRequest
      extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.LookupEffectiveGuestPolicyRequest)
      LookupEffectiveGuestPolicyRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use LookupEffectiveGuestPolicyRequest.newBuilder() to construct.
    private LookupEffectiveGuestPolicyRequest(
        com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private LookupEffectiveGuestPolicyRequest() {
      instance_ = "";
      osShortName_ = "";
      osVersion_ = "";
      osArchitecture_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new LookupEffectiveGuestPolicyRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_LookupEffectiveGuestPolicyRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_LookupEffectiveGuestPolicyRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
                  .class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
                  .Builder.class);
    }

    public static final int INSTANCE_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object instance_ = "";
    /**
     *
     *
     * <pre>
     * Required. The VM instance whose policies are being looked up.
     * </pre>
     *
     * <code>string instance = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The instance.
     */
    @java.lang.Override
    public java.lang.String getInstance() {
      java.lang.Object ref = instance_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        instance_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. The VM instance whose policies are being looked up.
     * </pre>
     *
     * <code>string instance = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     *
     * @return The bytes for instance.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getInstanceBytes() {
      java.lang.Object ref = instance_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        instance_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OS_SHORT_NAME_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private volatile java.lang.Object osShortName_ = "";
    /**
     *
     *
     * <pre>
     * Short name of the OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * instance.
     * </pre>
     *
     * <code>string os_short_name = 2;</code>
     *
     * @return The osShortName.
     */
    @java.lang.Override
    public java.lang.String getOsShortName() {
      java.lang.Object ref = osShortName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        osShortName_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Short name of the OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * instance.
     * </pre>
     *
     * <code>string os_short_name = 2;</code>
     *
     * @return The bytes for osShortName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getOsShortNameBytes() {
      java.lang.Object ref = osShortName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        osShortName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OS_VERSION_FIELD_NUMBER = 3;

    @SuppressWarnings("serial")
    private volatile java.lang.Object osVersion_ = "";
    /**
     *
     *
     * <pre>
     * Version of the OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * VM instance.
     * </pre>
     *
     * <code>string os_version = 3;</code>
     *
     * @return The osVersion.
     */
    @java.lang.Override
    public java.lang.String getOsVersion() {
      java.lang.Object ref = osVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        osVersion_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Version of the OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * VM instance.
     * </pre>
     *
     * <code>string os_version = 3;</code>
     *
     * @return The bytes for osVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getOsVersionBytes() {
      java.lang.Object ref = osVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        osVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OS_ARCHITECTURE_FIELD_NUMBER = 4;

    @SuppressWarnings("serial")
    private volatile java.lang.Object osArchitecture_ = "";
    /**
     *
     *
     * <pre>
     * Architecture of OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * instance.
     * </pre>
     *
     * <code>string os_architecture = 4;</code>
     *
     * @return The osArchitecture.
     */
    @java.lang.Override
    public java.lang.String getOsArchitecture() {
      java.lang.Object ref = osArchitecture_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        osArchitecture_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Architecture of OS running on the instance. The OS Config agent only
     * provides this field for targeting if OS Inventory is enabled for that
     * instance.
     * </pre>
     *
     * <code>string os_architecture = 4;</code>
     *
     * @return The bytes for osArchitecture.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getOsArchitectureBytes() {
      java.lang.Object ref = osArchitecture_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        osArchitecture_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(instance_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, instance_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osShortName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, osShortName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, osVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osArchitecture_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, osArchitecture_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(instance_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, instance_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osShortName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, osShortName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, osVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(osArchitecture_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, osArchitecture_);
      }
      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
          com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest) obj;

      if (!getInstance().equals(other.getInstance())) return false;
      if (!getOsShortName().equals(other.getOsShortName())) return false;
      if (!getOsVersion().equals(other.getOsVersion())) return false;
      if (!getOsArchitecture().equals(other.getOsArchitecture())) 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();
      hash = (37 * hash) + INSTANCE_FIELD_NUMBER;
      hash = (53 * hash) + getInstance().hashCode();
      hash = (37 * hash) + OS_SHORT_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getOsShortName().hashCode();
      hash = (37 * hash) + OS_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getOsVersion().hashCode();
      hash = (37 * hash) + OS_ARCHITECTURE_FIELD_NUMBER;
      hash = (53 * hash) + getOsArchitecture().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseFrom(java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseFrom(
            java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseFrom(com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
            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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * A request message for getting the effective guest policy assigned to the
     * instance.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.LookupEffectiveGuestPolicyRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.LookupEffectiveGuestPolicyRequest)
        com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_LookupEffectiveGuestPolicyRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_LookupEffectiveGuestPolicyRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
                    .class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
                    .Builder.class);
      }

      // Construct using
      // com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        instance_ = "";
        osShortName_ = "";
        osVersion_ = "";
        osArchitecture_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_LookupEffectiveGuestPolicyRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
          build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
          buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest(
                this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.instance_ = instance_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.osShortName_ = osShortName_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.osVersion_ = osVersion_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.osArchitecture_ = osArchitecture_;
        }
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof
            com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest) {
          return mergeFrom(
              (com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest)
                  other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
                .getDefaultInstance()) return this;
        if (!other.getInstance().isEmpty()) {
          instance_ = other.instance_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getOsShortName().isEmpty()) {
          osShortName_ = other.osShortName_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getOsVersion().isEmpty()) {
          osVersion_ = other.osVersion_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.getOsArchitecture().isEmpty()) {
          osArchitecture_ = other.osArchitecture_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private int bitField0_;

      private java.lang.Object instance_ = "";
      /**
       *
       *
       * <pre>
       * Required. The VM instance whose policies are being looked up.
       * </pre>
       *
       * <code>string instance = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The instance.
       */
      public java.lang.String getInstance() {
        java.lang.Object ref = instance_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          instance_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The VM instance whose policies are being looked up.
       * </pre>
       *
       * <code>string instance = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return The bytes for instance.
       */
      public com.google.protobuf.ByteString getInstanceBytes() {
        java.lang.Object ref = instance_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          instance_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. The VM instance whose policies are being looked up.
       * </pre>
       *
       * <code>string instance = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The instance to set.
       * @return This builder for chaining.
       */
      public Builder setInstance(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        instance_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The VM instance whose policies are being looked up.
       * </pre>
       *
       * <code>string instance = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearInstance() {
        instance_ = getDefaultInstance().getInstance();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. The VM instance whose policies are being looked up.
       * </pre>
       *
       * <code>string instance = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       *
       * @param value The bytes for instance to set.
       * @return This builder for chaining.
       */
      public Builder setInstanceBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        instance_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object osShortName_ = "";
      /**
       *
       *
       * <pre>
       * Short name of the OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * instance.
       * </pre>
       *
       * <code>string os_short_name = 2;</code>
       *
       * @return The osShortName.
       */
      public java.lang.String getOsShortName() {
        java.lang.Object ref = osShortName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          osShortName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Short name of the OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * instance.
       * </pre>
       *
       * <code>string os_short_name = 2;</code>
       *
       * @return The bytes for osShortName.
       */
      public com.google.protobuf.ByteString getOsShortNameBytes() {
        java.lang.Object ref = osShortName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          osShortName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Short name of the OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * instance.
       * </pre>
       *
       * <code>string os_short_name = 2;</code>
       *
       * @param value The osShortName to set.
       * @return This builder for chaining.
       */
      public Builder setOsShortName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        osShortName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Short name of the OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * instance.
       * </pre>
       *
       * <code>string os_short_name = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOsShortName() {
        osShortName_ = getDefaultInstance().getOsShortName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Short name of the OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * instance.
       * </pre>
       *
       * <code>string os_short_name = 2;</code>
       *
       * @param value The bytes for osShortName to set.
       * @return This builder for chaining.
       */
      public Builder setOsShortNameBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        osShortName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object osVersion_ = "";
      /**
       *
       *
       * <pre>
       * Version of the OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * VM instance.
       * </pre>
       *
       * <code>string os_version = 3;</code>
       *
       * @return The osVersion.
       */
      public java.lang.String getOsVersion() {
        java.lang.Object ref = osVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          osVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Version of the OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * VM instance.
       * </pre>
       *
       * <code>string os_version = 3;</code>
       *
       * @return The bytes for osVersion.
       */
      public com.google.protobuf.ByteString getOsVersionBytes() {
        java.lang.Object ref = osVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          osVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Version of the OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * VM instance.
       * </pre>
       *
       * <code>string os_version = 3;</code>
       *
       * @param value The osVersion to set.
       * @return This builder for chaining.
       */
      public Builder setOsVersion(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        osVersion_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Version of the OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * VM instance.
       * </pre>
       *
       * <code>string os_version = 3;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOsVersion() {
        osVersion_ = getDefaultInstance().getOsVersion();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Version of the OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * VM instance.
       * </pre>
       *
       * <code>string os_version = 3;</code>
       *
       * @param value The bytes for osVersion to set.
       * @return This builder for chaining.
       */
      public Builder setOsVersionBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        osVersion_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object osArchitecture_ = "";
      /**
       *
       *
       * <pre>
       * Architecture of OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * instance.
       * </pre>
       *
       * <code>string os_architecture = 4;</code>
       *
       * @return The osArchitecture.
       */
      public java.lang.String getOsArchitecture() {
        java.lang.Object ref = osArchitecture_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          osArchitecture_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Architecture of OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * instance.
       * </pre>
       *
       * <code>string os_architecture = 4;</code>
       *
       * @return The bytes for osArchitecture.
       */
      public com.google.protobuf.ByteString getOsArchitectureBytes() {
        java.lang.Object ref = osArchitecture_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          osArchitecture_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Architecture of OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * instance.
       * </pre>
       *
       * <code>string os_architecture = 4;</code>
       *
       * @param value The osArchitecture to set.
       * @return This builder for chaining.
       */
      public Builder setOsArchitecture(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        osArchitecture_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Architecture of OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * instance.
       * </pre>
       *
       * <code>string os_architecture = 4;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearOsArchitecture() {
        osArchitecture_ = getDefaultInstance().getOsArchitecture();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Architecture of OS running on the instance. The OS Config agent only
       * provides this field for targeting if OS Inventory is enabled for that
       * instance.
       * </pre>
       *
       * <code>string os_architecture = 4;</code>
       *
       * @param value The bytes for osArchitecture to set.
       * @return This builder for chaining.
       */
      public Builder setOsArchitectureBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        osArchitecture_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.LookupEffectiveGuestPolicyRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.LookupEffectiveGuestPolicyRequest)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies
            .LookupEffectiveGuestPolicyRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.LookupEffectiveGuestPolicyRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface EffectiveGuestPolicyOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.EffectiveGuestPolicy)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * List of package configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
     * </code>
     */
    java.util.List<
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage>
        getPackagesList();
    /**
     *
     *
     * <pre>
     * List of package configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage getPackages(
        int index);
    /**
     *
     *
     * <pre>
     * List of package configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
     * </code>
     */
    int getPackagesCount();
    /**
     *
     *
     * <pre>
     * List of package configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
     * </code>
     */
    java.util.List<
            ? extends
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedPackageOrBuilder>
        getPackagesOrBuilderList();
    /**
     *
     *
     * <pre>
     * List of package configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackageOrBuilder
        getPackagesOrBuilder(int index);

    /**
     *
     *
     * <pre>
     * List of package repository configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
     * </code>
     */
    java.util.List<
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedPackageRepository>
        getPackageRepositoriesList();
    /**
     *
     *
     * <pre>
     * List of package repository configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackageRepository
        getPackageRepositories(int index);
    /**
     *
     *
     * <pre>
     * List of package repository configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
     * </code>
     */
    int getPackageRepositoriesCount();
    /**
     *
     *
     * <pre>
     * List of package repository configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
     * </code>
     */
    java.util.List<
            ? extends
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedPackageRepositoryOrBuilder>
        getPackageRepositoriesOrBuilderList();
    /**
     *
     *
     * <pre>
     * List of package repository configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
            .SourcedPackageRepositoryOrBuilder
        getPackageRepositoriesOrBuilder(int index);

    /**
     *
     *
     * <pre>
     * List of recipes assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
     * </code>
     */
    java.util.List<
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedSoftwareRecipe>
        getSoftwareRecipesList();
    /**
     *
     *
     * <pre>
     * List of recipes assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
        getSoftwareRecipes(int index);
    /**
     *
     *
     * <pre>
     * List of recipes assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
     * </code>
     */
    int getSoftwareRecipesCount();
    /**
     *
     *
     * <pre>
     * List of recipes assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
     * </code>
     */
    java.util.List<
            ? extends
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedSoftwareRecipeOrBuilder>
        getSoftwareRecipesOrBuilderList();
    /**
     *
     *
     * <pre>
     * List of recipes assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
     * </code>
     */
    com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
            .SourcedSoftwareRecipeOrBuilder
        getSoftwareRecipesOrBuilder(int index);
  }
  /**
   *
   *
   * <pre>
   * The effective guest policy that applies to a VM instance.
   * </pre>
   *
   * Protobuf type {@code google.cloud.osconfig.v1beta.EffectiveGuestPolicy}
   */
  public static final class EffectiveGuestPolicy extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.EffectiveGuestPolicy)
      EffectiveGuestPolicyOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use EffectiveGuestPolicy.newBuilder() to construct.
    private EffectiveGuestPolicy(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private EffectiveGuestPolicy() {
      packages_ = java.util.Collections.emptyList();
      packageRepositories_ = java.util.Collections.emptyList();
      softwareRecipes_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
      return new EffectiveGuestPolicy();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.osconfig.v1beta.GuestPolicies
          .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.class,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.Builder.class);
    }

    public interface SourcedPackageOrBuilder
        extends
        // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage)
        com.google.protobuf.MessageOrBuilder {

      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The source.
       */
      java.lang.String getSource();
      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The bytes for source.
       */
      com.google.protobuf.ByteString getSourceBytes();

      /**
       *
       *
       * <pre>
       * A software package to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
       *
       * @return Whether the package field is set.
       */
      boolean hasPackage();
      /**
       *
       *
       * <pre>
       * A software package to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
       *
       * @return The package.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.Package getPackage();
      /**
       *
       *
       * <pre>
       * A software package to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder getPackageOrBuilder();
    }
    /**
     *
     *
     * <pre>
     * A guest policy package including its source.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage}
     */
    public static final class SourcedPackage extends com.google.protobuf.GeneratedMessageV3
        implements
        // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage)
        SourcedPackageOrBuilder {
      private static final long serialVersionUID = 0L;
      // Use SourcedPackage.newBuilder() to construct.
      private SourcedPackage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }

      private SourcedPackage() {
        source_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
        return new SourcedPackage();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
        return this.unknownFields;
      }

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                    .class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                    .Builder.class);
      }

      public static final int SOURCE_FIELD_NUMBER = 1;

      @SuppressWarnings("serial")
      private volatile java.lang.Object source_ = "";
      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The source.
       */
      @java.lang.Override
      public java.lang.String getSource() {
        java.lang.Object ref = source_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          source_ = s;
          return s;
        }
      }
      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The bytes for source.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getSourceBytes() {
        java.lang.Object ref = source_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          source_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int PACKAGE_FIELD_NUMBER = 2;
      private com.google.cloud.osconfig.v1beta.GuestPolicies.Package package_;
      /**
       *
       *
       * <pre>
       * A software package to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
       *
       * @return Whether the package field is set.
       */
      @java.lang.Override
      public boolean hasPackage() {
        return package_ != null;
      }
      /**
       *
       *
       * <pre>
       * A software package to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
       *
       * @return The package.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.Package getPackage() {
        return package_ == null
            ? com.google.cloud.osconfig.v1beta.GuestPolicies.Package.getDefaultInstance()
            : package_;
      }
      /**
       *
       *
       * <pre>
       * A software package to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder getPackageOrBuilder() {
        return package_ == null
            ? com.google.cloud.osconfig.v1beta.GuestPolicies.Package.getDefaultInstance()
            : package_;
      }

      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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, source_);
        }
        if (package_ != null) {
          output.writeMessage(2, getPackage());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, source_);
        }
        if (package_ != null) {
          size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getPackage());
        }
        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
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage)) {
          return super.equals(obj);
        }
        com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage other =
            (com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage)
                obj;

        if (!getSource().equals(other.getSource())) return false;
        if (hasPackage() != other.hasPackage()) return false;
        if (hasPackage()) {
          if (!getPackage().equals(other.getPackage())) 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();
        hash = (37 * hash) + SOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getSource().hashCode();
        if (hasPackage()) {
          hash = (37 * hash) + PACKAGE_FIELD_NUMBER;
          hash = (53 * hash) + getPackage().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseFrom(java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseFrom(
              java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseFrom(com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() {
        return newBuilder();
      }

      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }

      public static Builder newBuilder(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
              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.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       *
       *
       * <pre>
       * A guest policy package including its source.
       * </pre>
       *
       * Protobuf type {@code google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage}
       */
      public static final class Builder
          extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
          implements
          // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage)
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackage_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackage_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                      .class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                      .Builder.class);
        }

        // Construct using
        // com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage.newBuilder()
        private Builder() {}

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

        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          source_ = "";
          package_ = null;
          if (packageBuilder_ != null) {
            packageBuilder_.dispose();
            packageBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackage_descriptor;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
            getDefaultInstanceForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
              .getDefaultInstance();
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
            build() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
              result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
            buildPartial() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
              result =
                  new com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackage(this);
          if (bitField0_ != 0) {
            buildPartial0(result);
          }
          onBuilt();
          return result;
        }

        private void buildPartial0(
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.source_ = source_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.package_ = packageBuilder_ == null ? package_ : packageBuilder_.build();
          }
        }

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

        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.setField(field, value);
        }

        @java.lang.Override
        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }

        @java.lang.Override
        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }

        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index,
            java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }

        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other
              instanceof
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage) {
            return mergeFrom(
                (com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage)
                    other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                other) {
          if (other
              == com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                  .getDefaultInstance()) return this;
          if (!other.getSource().isEmpty()) {
            source_ = other.source_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasPackage()) {
            mergePackage(other.getPackage());
          }
          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:
                  {
                    source_ = input.readStringRequireUtf8();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 10
                case 18:
                  {
                    input.readMessage(getPackageFieldBuilder().getBuilder(), extensionRegistry);
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 18
                default:
                  {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }

        private int bitField0_;

        private java.lang.Object source_ = "";
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @return The source.
         */
        public java.lang.String getSource() {
          java.lang.Object ref = source_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            source_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @return The bytes for source.
         */
        public com.google.protobuf.ByteString getSourceBytes() {
          java.lang.Object ref = source_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            source_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @param value The source to set.
         * @return This builder for chaining.
         */
        public Builder setSource(java.lang.String value) {
          if (value == null) {
            throw new NullPointerException();
          }
          source_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @return This builder for chaining.
         */
        public Builder clearSource() {
          source_ = getDefaultInstance().getSource();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @param value The bytes for source to set.
         * @return This builder for chaining.
         */
        public Builder setSourceBytes(com.google.protobuf.ByteString value) {
          if (value == null) {
            throw new NullPointerException();
          }
          checkByteStringIsUtf8(value);
          source_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private com.google.cloud.osconfig.v1beta.GuestPolicies.Package package_;
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.Package,
                com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder>
            packageBuilder_;
        /**
         *
         *
         * <pre>
         * A software package to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
         *
         * @return Whether the package field is set.
         */
        public boolean hasPackage() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         *
         *
         * <pre>
         * A software package to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
         *
         * @return The package.
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.Package getPackage() {
          if (packageBuilder_ == null) {
            return package_ == null
                ? com.google.cloud.osconfig.v1beta.GuestPolicies.Package.getDefaultInstance()
                : package_;
          } else {
            return packageBuilder_.getMessage();
          }
        }
        /**
         *
         *
         * <pre>
         * A software package to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
         */
        public Builder setPackage(com.google.cloud.osconfig.v1beta.GuestPolicies.Package value) {
          if (packageBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            package_ = value;
          } else {
            packageBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software package to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
         */
        public Builder setPackage(
            com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder builderForValue) {
          if (packageBuilder_ == null) {
            package_ = builderForValue.build();
          } else {
            packageBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software package to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
         */
        public Builder mergePackage(com.google.cloud.osconfig.v1beta.GuestPolicies.Package value) {
          if (packageBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0)
                && package_ != null
                && package_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.Package
                        .getDefaultInstance()) {
              getPackageBuilder().mergeFrom(value);
            } else {
              package_ = value;
            }
          } else {
            packageBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software package to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
         */
        public Builder clearPackage() {
          bitField0_ = (bitField0_ & ~0x00000002);
          package_ = null;
          if (packageBuilder_ != null) {
            packageBuilder_.dispose();
            packageBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software package to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder getPackageBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getPackageFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * A software package to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder
            getPackageOrBuilder() {
          if (packageBuilder_ != null) {
            return packageBuilder_.getMessageOrBuilder();
          } else {
            return package_ == null
                ? com.google.cloud.osconfig.v1beta.GuestPolicies.Package.getDefaultInstance()
                : package_;
          }
        }
        /**
         *
         *
         * <pre>
         * A software package to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.Package package = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.Package,
                com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder>
            getPackageFieldBuilder() {
          if (packageBuilder_ == null) {
            packageBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.Package,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.Package.Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.PackageOrBuilder>(
                    getPackage(), getParentForChildren(), isClean());
            package_ = null;
          }
          return packageBuilder_;
        }

        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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

        // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage)
      }

      // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage)
      private static final com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          DEFAULT_INSTANCE;

      static {
        DEFAULT_INSTANCE =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedPackage();
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackage
          getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
          getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }

    public interface SourcedPackageRepositoryOrBuilder
        extends
        // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository)
        com.google.protobuf.MessageOrBuilder {

      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The source.
       */
      java.lang.String getSource();
      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The bytes for source.
       */
      com.google.protobuf.ByteString getSourceBytes();

      /**
       *
       *
       * <pre>
       * A software package repository to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
       *
       * @return Whether the packageRepository field is set.
       */
      boolean hasPackageRepository();
      /**
       *
       *
       * <pre>
       * A software package repository to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
       *
       * @return The packageRepository.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository getPackageRepository();
      /**
       *
       *
       * <pre>
       * A software package repository to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder
          getPackageRepositoryOrBuilder();
    }
    /**
     *
     *
     * <pre>
     * A guest policy package repository including its source.
     * </pre>
     *
     * Protobuf type {@code
     * google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository}
     */
    public static final class SourcedPackageRepository
        extends com.google.protobuf.GeneratedMessageV3
        implements
        // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository)
        SourcedPackageRepositoryOrBuilder {
      private static final long serialVersionUID = 0L;
      // Use SourcedPackageRepository.newBuilder() to construct.
      private SourcedPackageRepository(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }

      private SourcedPackageRepository() {
        source_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
        return new SourcedPackageRepository();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
        return this.unknownFields;
      }

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackageRepository_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackageRepository_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedPackageRepository.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedPackageRepository.Builder.class);
      }

      public static final int SOURCE_FIELD_NUMBER = 1;

      @SuppressWarnings("serial")
      private volatile java.lang.Object source_ = "";
      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The source.
       */
      @java.lang.Override
      public java.lang.String getSource() {
        java.lang.Object ref = source_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          source_ = s;
          return s;
        }
      }
      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The bytes for source.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getSourceBytes() {
        java.lang.Object ref = source_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          source_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int PACKAGE_REPOSITORY_FIELD_NUMBER = 2;
      private com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository packageRepository_;
      /**
       *
       *
       * <pre>
       * A software package repository to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
       *
       * @return Whether the packageRepository field is set.
       */
      @java.lang.Override
      public boolean hasPackageRepository() {
        return packageRepository_ != null;
      }
      /**
       *
       *
       * <pre>
       * A software package repository to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
       *
       * @return The packageRepository.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
          getPackageRepository() {
        return packageRepository_ == null
            ? com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.getDefaultInstance()
            : packageRepository_;
      }
      /**
       *
       *
       * <pre>
       * A software package repository to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder
          getPackageRepositoryOrBuilder() {
        return packageRepository_ == null
            ? com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.getDefaultInstance()
            : packageRepository_;
      }

      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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, source_);
        }
        if (packageRepository_ != null) {
          output.writeMessage(2, getPackageRepository());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, source_);
        }
        if (packageRepository_ != null) {
          size +=
              com.google.protobuf.CodedOutputStream.computeMessageSize(2, getPackageRepository());
        }
        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
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedPackageRepository)) {
          return super.equals(obj);
        }
        com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackageRepository
            other =
                (com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                        .SourcedPackageRepository)
                    obj;

        if (!getSource().equals(other.getSource())) return false;
        if (hasPackageRepository() != other.hasPackageRepository()) return false;
        if (hasPackageRepository()) {
          if (!getPackageRepository().equals(other.getPackageRepository())) 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();
        hash = (37 * hash) + SOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getSource().hashCode();
        if (hasPackageRepository()) {
          hash = (37 * hash) + PACKAGE_REPOSITORY_FIELD_NUMBER;
          hash = (53 * hash) + getPackageRepository().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseFrom(java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseFrom(
              java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseFrom(com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() {
        return newBuilder();
      }

      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }

      public static Builder newBuilder(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository
              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.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       *
       *
       * <pre>
       * A guest policy package repository including its source.
       * </pre>
       *
       * Protobuf type {@code
       * google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository}
       */
      public static final class Builder
          extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
          implements
          // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository)
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepositoryOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackageRepository_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackageRepository_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackageRepository.class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackageRepository.Builder.class);
        }

        // Construct using
        // com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackageRepository.newBuilder()
        private Builder() {}

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

        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          source_ = "";
          packageRepository_ = null;
          if (packageRepositoryBuilder_ != null) {
            packageRepositoryBuilder_.dispose();
            packageRepositoryBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackageRepository_descriptor;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedPackageRepository
            getDefaultInstanceForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedPackageRepository
            build() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository
              result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedPackageRepository
            buildPartial() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository
              result =
                  new com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackageRepository(this);
          if (bitField0_ != 0) {
            buildPartial0(result);
          }
          onBuilt();
          return result;
        }

        private void buildPartial0(
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedPackageRepository
                result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.source_ = source_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.packageRepository_ =
                packageRepositoryBuilder_ == null
                    ? packageRepository_
                    : packageRepositoryBuilder_.build();
          }
        }

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

        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.setField(field, value);
        }

        @java.lang.Override
        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }

        @java.lang.Override
        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }

        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index,
            java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }

        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other
              instanceof
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository) {
            return mergeFrom(
                (com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                        .SourcedPackageRepository)
                    other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedPackageRepository
                other) {
          if (other
              == com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository.getDefaultInstance()) return this;
          if (!other.getSource().isEmpty()) {
            source_ = other.source_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasPackageRepository()) {
            mergePackageRepository(other.getPackageRepository());
          }
          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:
                  {
                    source_ = input.readStringRequireUtf8();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 10
                case 18:
                  {
                    input.readMessage(
                        getPackageRepositoryFieldBuilder().getBuilder(), extensionRegistry);
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 18
                default:
                  {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }

        private int bitField0_;

        private java.lang.Object source_ = "";
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @return The source.
         */
        public java.lang.String getSource() {
          java.lang.Object ref = source_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            source_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @return The bytes for source.
         */
        public com.google.protobuf.ByteString getSourceBytes() {
          java.lang.Object ref = source_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            source_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @param value The source to set.
         * @return This builder for chaining.
         */
        public Builder setSource(java.lang.String value) {
          if (value == null) {
            throw new NullPointerException();
          }
          source_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @return This builder for chaining.
         */
        public Builder clearSource() {
          source_ = getDefaultInstance().getSource();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @param value The bytes for source to set.
         * @return This builder for chaining.
         */
        public Builder setSourceBytes(com.google.protobuf.ByteString value) {
          if (value == null) {
            throw new NullPointerException();
          }
          checkByteStringIsUtf8(value);
          source_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository packageRepository_;
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository,
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder>
            packageRepositoryBuilder_;
        /**
         *
         *
         * <pre>
         * A software package repository to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
         *
         * @return Whether the packageRepository field is set.
         */
        public boolean hasPackageRepository() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         *
         *
         * <pre>
         * A software package repository to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
         *
         * @return The packageRepository.
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
            getPackageRepository() {
          if (packageRepositoryBuilder_ == null) {
            return packageRepository_ == null
                ? com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
                    .getDefaultInstance()
                : packageRepository_;
          } else {
            return packageRepositoryBuilder_.getMessage();
          }
        }
        /**
         *
         *
         * <pre>
         * A software package repository to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
         */
        public Builder setPackageRepository(
            com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository value) {
          if (packageRepositoryBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            packageRepository_ = value;
          } else {
            packageRepositoryBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software package repository to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
         */
        public Builder setPackageRepository(
            com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder
                builderForValue) {
          if (packageRepositoryBuilder_ == null) {
            packageRepository_ = builderForValue.build();
          } else {
            packageRepositoryBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software package repository to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
         */
        public Builder mergePackageRepository(
            com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository value) {
          if (packageRepositoryBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0)
                && packageRepository_ != null
                && packageRepository_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
                        .getDefaultInstance()) {
              getPackageRepositoryBuilder().mergeFrom(value);
            } else {
              packageRepository_ = value;
            }
          } else {
            packageRepositoryBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software package repository to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
         */
        public Builder clearPackageRepository() {
          bitField0_ = (bitField0_ & ~0x00000002);
          packageRepository_ = null;
          if (packageRepositoryBuilder_ != null) {
            packageRepositoryBuilder_.dispose();
            packageRepositoryBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software package repository to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder
            getPackageRepositoryBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getPackageRepositoryFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * A software package repository to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder
            getPackageRepositoryOrBuilder() {
          if (packageRepositoryBuilder_ != null) {
            return packageRepositoryBuilder_.getMessageOrBuilder();
          } else {
            return packageRepository_ == null
                ? com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository
                    .getDefaultInstance()
                : packageRepository_;
          }
        }
        /**
         *
         *
         * <pre>
         * A software package repository to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.PackageRepository package_repository = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository,
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder>
            getPackageRepositoryFieldBuilder() {
          if (packageRepositoryBuilder_ == null) {
            packageRepositoryBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepository.Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.PackageRepositoryOrBuilder>(
                    getPackageRepository(), getParentForChildren(), isClean());
            packageRepository_ = null;
          }
          return packageRepositoryBuilder_;
        }

        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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

        // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository)
      }

      // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository)
      private static final com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          DEFAULT_INSTANCE;

      static {
        DEFAULT_INSTANCE =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedPackageRepository();
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }

    public interface SourcedSoftwareRecipeOrBuilder
        extends
        // @@protoc_insertion_point(interface_extends:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe)
        com.google.protobuf.MessageOrBuilder {

      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The source.
       */
      java.lang.String getSource();
      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The bytes for source.
       */
      com.google.protobuf.ByteString getSourceBytes();

      /**
       *
       *
       * <pre>
       * A software recipe to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
       *
       * @return Whether the softwareRecipe field is set.
       */
      boolean hasSoftwareRecipe();
      /**
       *
       *
       * <pre>
       * A software recipe to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
       *
       * @return The softwareRecipe.
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe getSoftwareRecipe();
      /**
       *
       *
       * <pre>
       * A software recipe to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
       */
      com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder
          getSoftwareRecipeOrBuilder();
    }
    /**
     *
     *
     * <pre>
     * A guest policy recipe including its source.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe}
     */
    public static final class SourcedSoftwareRecipe extends com.google.protobuf.GeneratedMessageV3
        implements
        // @@protoc_insertion_point(message_implements:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe)
        SourcedSoftwareRecipeOrBuilder {
      private static final long serialVersionUID = 0L;
      // Use SourcedSoftwareRecipe.newBuilder() to construct.
      private SourcedSoftwareRecipe(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }

      private SourcedSoftwareRecipe() {
        source_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
        return new SourcedSoftwareRecipe();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
        return this.unknownFields;
      }

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedSoftwareRecipe_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedSoftwareRecipe_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedSoftwareRecipe.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedSoftwareRecipe.Builder.class);
      }

      public static final int SOURCE_FIELD_NUMBER = 1;

      @SuppressWarnings("serial")
      private volatile java.lang.Object source_ = "";
      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The source.
       */
      @java.lang.Override
      public java.lang.String getSource() {
        java.lang.Object ref = source_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          source_ = s;
          return s;
        }
      }
      /**
       *
       *
       * <pre>
       * Name of the guest policy providing this config.
       * </pre>
       *
       * <code>string source = 1;</code>
       *
       * @return The bytes for source.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getSourceBytes() {
        java.lang.Object ref = source_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          source_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SOFTWARE_RECIPE_FIELD_NUMBER = 2;
      private com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe softwareRecipe_;
      /**
       *
       *
       * <pre>
       * A software recipe to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
       *
       * @return Whether the softwareRecipe field is set.
       */
      @java.lang.Override
      public boolean hasSoftwareRecipe() {
        return softwareRecipe_ != null;
      }
      /**
       *
       *
       * <pre>
       * A software recipe to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
       *
       * @return The softwareRecipe.
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe getSoftwareRecipe() {
        return softwareRecipe_ == null
            ? com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.getDefaultInstance()
            : softwareRecipe_;
      }
      /**
       *
       *
       * <pre>
       * A software recipe to configure on the VM instance.
       * </pre>
       *
       * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
       */
      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder
          getSoftwareRecipeOrBuilder() {
        return softwareRecipe_ == null
            ? com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.getDefaultInstance()
            : softwareRecipe_;
      }

      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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, source_);
        }
        if (softwareRecipe_ != null) {
          output.writeMessage(2, getSoftwareRecipe());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, source_);
        }
        if (softwareRecipe_ != null) {
          size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSoftwareRecipe());
        }
        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
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedSoftwareRecipe)) {
          return super.equals(obj);
        }
        com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
            other =
                (com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                        .SourcedSoftwareRecipe)
                    obj;

        if (!getSource().equals(other.getSource())) return false;
        if (hasSoftwareRecipe() != other.hasSoftwareRecipe()) return false;
        if (hasSoftwareRecipe()) {
          if (!getSoftwareRecipe().equals(other.getSoftwareRecipe())) 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();
        hash = (37 * hash) + SOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getSource().hashCode();
        if (hasSoftwareRecipe()) {
          hash = (37 * hash) + SOFTWARE_RECIPE_FIELD_NUMBER;
          hash = (53 * hash) + getSoftwareRecipe().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseFrom(java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseFrom(
              java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseFrom(com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
            PARSER, input, extensionRegistry);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
            PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() {
        return newBuilder();
      }

      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }

      public static Builder newBuilder(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
              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.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       *
       *
       * <pre>
       * A guest policy recipe including its source.
       * </pre>
       *
       * Protobuf type {@code
       * google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe}
       */
      public static final class Builder
          extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
          implements
          // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe)
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedSoftwareRecipe_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedSoftwareRecipe_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedSoftwareRecipe.class,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedSoftwareRecipe.Builder.class);
        }

        // Construct using
        // com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe.newBuilder()
        private Builder() {}

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

        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          source_ = "";
          softwareRecipe_ = null;
          if (softwareRecipeBuilder_ != null) {
            softwareRecipeBuilder_.dispose();
            softwareRecipeBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies
              .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedSoftwareRecipe_descriptor;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedSoftwareRecipe
            getDefaultInstanceForType() {
          return com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedSoftwareRecipe
            build() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
              result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedSoftwareRecipe
            buildPartial() {
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
              result =
                  new com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedSoftwareRecipe(this);
          if (bitField0_ != 0) {
            buildPartial0(result);
          }
          onBuilt();
          return result;
        }

        private void buildPartial0(
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedSoftwareRecipe
                result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.source_ = source_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.softwareRecipe_ =
                softwareRecipeBuilder_ == null ? softwareRecipe_ : softwareRecipeBuilder_.build();
          }
        }

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

        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.setField(field, value);
        }

        @java.lang.Override
        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }

        @java.lang.Override
        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }

        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index,
            java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }

        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other
              instanceof
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipe) {
            return mergeFrom(
                (com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                        .SourcedSoftwareRecipe)
                    other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedSoftwareRecipe
                other) {
          if (other
              == com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipe.getDefaultInstance()) return this;
          if (!other.getSource().isEmpty()) {
            source_ = other.source_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasSoftwareRecipe()) {
            mergeSoftwareRecipe(other.getSoftwareRecipe());
          }
          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:
                  {
                    source_ = input.readStringRequireUtf8();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 10
                case 18:
                  {
                    input.readMessage(
                        getSoftwareRecipeFieldBuilder().getBuilder(), extensionRegistry);
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 18
                default:
                  {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }

        private int bitField0_;

        private java.lang.Object source_ = "";
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @return The source.
         */
        public java.lang.String getSource() {
          java.lang.Object ref = source_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            source_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @return The bytes for source.
         */
        public com.google.protobuf.ByteString getSourceBytes() {
          java.lang.Object ref = source_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
            source_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @param value The source to set.
         * @return This builder for chaining.
         */
        public Builder setSource(java.lang.String value) {
          if (value == null) {
            throw new NullPointerException();
          }
          source_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @return This builder for chaining.
         */
        public Builder clearSource() {
          source_ = getDefaultInstance().getSource();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * Name of the guest policy providing this config.
         * </pre>
         *
         * <code>string source = 1;</code>
         *
         * @param value The bytes for source to set.
         * @return This builder for chaining.
         */
        public Builder setSourceBytes(com.google.protobuf.ByteString value) {
          if (value == null) {
            throw new NullPointerException();
          }
          checkByteStringIsUtf8(value);
          source_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe softwareRecipe_;
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder>
            softwareRecipeBuilder_;
        /**
         *
         *
         * <pre>
         * A software recipe to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
         *
         * @return Whether the softwareRecipe field is set.
         */
        public boolean hasSoftwareRecipe() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         *
         *
         * <pre>
         * A software recipe to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
         *
         * @return The softwareRecipe.
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe getSoftwareRecipe() {
          if (softwareRecipeBuilder_ == null) {
            return softwareRecipe_ == null
                ? com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.getDefaultInstance()
                : softwareRecipe_;
          } else {
            return softwareRecipeBuilder_.getMessage();
          }
        }
        /**
         *
         *
         * <pre>
         * A software recipe to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
         */
        public Builder setSoftwareRecipe(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe value) {
          if (softwareRecipeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            softwareRecipe_ = value;
          } else {
            softwareRecipeBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software recipe to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
         */
        public Builder setSoftwareRecipe(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder builderForValue) {
          if (softwareRecipeBuilder_ == null) {
            softwareRecipe_ = builderForValue.build();
          } else {
            softwareRecipeBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software recipe to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
         */
        public Builder mergeSoftwareRecipe(
            com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe value) {
          if (softwareRecipeBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0)
                && softwareRecipe_ != null
                && softwareRecipe_
                    != com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe
                        .getDefaultInstance()) {
              getSoftwareRecipeBuilder().mergeFrom(value);
            } else {
              softwareRecipe_ = value;
            }
          } else {
            softwareRecipeBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software recipe to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
         */
        public Builder clearSoftwareRecipe() {
          bitField0_ = (bitField0_ & ~0x00000002);
          softwareRecipe_ = null;
          if (softwareRecipeBuilder_ != null) {
            softwareRecipeBuilder_.dispose();
            softwareRecipeBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         *
         *
         * <pre>
         * A software recipe to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder
            getSoftwareRecipeBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getSoftwareRecipeFieldBuilder().getBuilder();
        }
        /**
         *
         *
         * <pre>
         * A software recipe to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
         */
        public com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder
            getSoftwareRecipeOrBuilder() {
          if (softwareRecipeBuilder_ != null) {
            return softwareRecipeBuilder_.getMessageOrBuilder();
          } else {
            return softwareRecipe_ == null
                ? com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.getDefaultInstance()
                : softwareRecipe_;
          }
        }
        /**
         *
         *
         * <pre>
         * A software recipe to configure on the VM instance.
         * </pre>
         *
         * <code>.google.cloud.osconfig.v1beta.SoftwareRecipe software_recipe = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder,
                com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder>
            getSoftwareRecipeFieldBuilder() {
          if (softwareRecipeBuilder_ == null) {
            softwareRecipeBuilder_ =
                new com.google.protobuf.SingleFieldBuilderV3<
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipe.Builder,
                    com.google.cloud.osconfig.v1beta.GuestPolicies.SoftwareRecipeOrBuilder>(
                    getSoftwareRecipe(), getParentForChildren(), isClean());
            softwareRecipe_ = null;
          }
          return softwareRecipeBuilder_;
        }

        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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

        // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe)
      }

      // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe)
      private static final com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          DEFAULT_INSTANCE;

      static {
        DEFAULT_INSTANCE =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedSoftwareRecipe();
      }

      public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }

    public static final int PACKAGES_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private java.util.List<
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage>
        packages_;
    /**
     *
     *
     * <pre>
     * List of package configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
     * </code>
     */
    @java.lang.Override
    public java.util.List<
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage>
        getPackagesList() {
      return packages_;
    }
    /**
     *
     *
     * <pre>
     * List of package configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
     * </code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedPackageOrBuilder>
        getPackagesOrBuilderList() {
      return packages_;
    }
    /**
     *
     *
     * <pre>
     * List of package configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
     * </code>
     */
    @java.lang.Override
    public int getPackagesCount() {
      return packages_.size();
    }
    /**
     *
     *
     * <pre>
     * List of package configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
        getPackages(int index) {
      return packages_.get(index);
    }
    /**
     *
     *
     * <pre>
     * List of package configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
            .SourcedPackageOrBuilder
        getPackagesOrBuilder(int index) {
      return packages_.get(index);
    }

    public static final int PACKAGE_REPOSITORIES_FIELD_NUMBER = 2;

    @SuppressWarnings("serial")
    private java.util.List<
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedPackageRepository>
        packageRepositories_;
    /**
     *
     *
     * <pre>
     * List of package repository configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
     * </code>
     */
    @java.lang.Override
    public java.util.List<
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedPackageRepository>
        getPackageRepositoriesList() {
      return packageRepositories_;
    }
    /**
     *
     *
     * <pre>
     * List of package repository configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
     * </code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedPackageRepositoryOrBuilder>
        getPackageRepositoriesOrBuilderList() {
      return packageRepositories_;
    }
    /**
     *
     *
     * <pre>
     * List of package repository configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
     * </code>
     */
    @java.lang.Override
    public int getPackageRepositoriesCount() {
      return packageRepositories_.size();
    }
    /**
     *
     *
     * <pre>
     * List of package repository configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
            .SourcedPackageRepository
        getPackageRepositories(int index) {
      return packageRepositories_.get(index);
    }
    /**
     *
     *
     * <pre>
     * List of package repository configurations assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
            .SourcedPackageRepositoryOrBuilder
        getPackageRepositoriesOrBuilder(int index) {
      return packageRepositories_.get(index);
    }

    public static final int SOFTWARE_RECIPES_FIELD_NUMBER = 3;

    @SuppressWarnings("serial")
    private java.util.List<
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedSoftwareRecipe>
        softwareRecipes_;
    /**
     *
     *
     * <pre>
     * List of recipes assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
     * </code>
     */
    @java.lang.Override
    public java.util.List<
            com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .SourcedSoftwareRecipe>
        getSoftwareRecipesList() {
      return softwareRecipes_;
    }
    /**
     *
     *
     * <pre>
     * List of recipes assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
     * </code>
     */
    @java.lang.Override
    public java.util.List<
            ? extends
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedSoftwareRecipeOrBuilder>
        getSoftwareRecipesOrBuilderList() {
      return softwareRecipes_;
    }
    /**
     *
     *
     * <pre>
     * List of recipes assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
     * </code>
     */
    @java.lang.Override
    public int getSoftwareRecipesCount() {
      return softwareRecipes_.size();
    }
    /**
     *
     *
     * <pre>
     * List of recipes assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
        getSoftwareRecipes(int index) {
      return softwareRecipes_.get(index);
    }
    /**
     *
     *
     * <pre>
     * List of recipes assigned to the VM instance.
     * </pre>
     *
     * <code>
     * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
            .SourcedSoftwareRecipeOrBuilder
        getSoftwareRecipesOrBuilder(int index) {
      return softwareRecipes_.get(index);
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      for (int i = 0; i < packages_.size(); i++) {
        output.writeMessage(1, packages_.get(i));
      }
      for (int i = 0; i < packageRepositories_.size(); i++) {
        output.writeMessage(2, packageRepositories_.get(i));
      }
      for (int i = 0; i < softwareRecipes_.size(); i++) {
        output.writeMessage(3, softwareRecipes_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < packages_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, packages_.get(i));
      }
      for (int i = 0; i < packageRepositories_.size(); i++) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                2, packageRepositories_.get(i));
      }
      for (int i = 0; i < softwareRecipes_.size(); i++) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(3, softwareRecipes_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy)) {
        return super.equals(obj);
      }
      com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy other =
          (com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy) obj;

      if (!getPackagesList().equals(other.getPackagesList())) return false;
      if (!getPackageRepositoriesList().equals(other.getPackageRepositoriesList())) return false;
      if (!getSoftwareRecipesList().equals(other.getSoftwareRecipesList())) 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 (getPackagesCount() > 0) {
        hash = (37 * hash) + PACKAGES_FIELD_NUMBER;
        hash = (53 * hash) + getPackagesList().hashCode();
      }
      if (getPackageRepositoriesCount() > 0) {
        hash = (37 * hash) + PACKAGE_REPOSITORIES_FIELD_NUMBER;
        hash = (53 * hash) + getPackageRepositoriesList().hashCode();
      }
      if (getSoftwareRecipesCount() > 0) {
        hash = (37 * hash) + SOFTWARE_RECIPES_FIELD_NUMBER;
        hash = (53 * hash) + getSoftwareRecipesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy 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.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * The effective guest policy that applies to a VM instance.
     * </pre>
     *
     * Protobuf type {@code google.cloud.osconfig.v1beta.EffectiveGuestPolicy}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.osconfig.v1beta.EffectiveGuestPolicy)
        com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.class,
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.Builder.class);
      }

      // Construct using
      // com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (packagesBuilder_ == null) {
          packages_ = java.util.Collections.emptyList();
        } else {
          packages_ = null;
          packagesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (packageRepositoriesBuilder_ == null) {
          packageRepositories_ = java.util.Collections.emptyList();
        } else {
          packageRepositories_ = null;
          packageRepositoriesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (softwareRecipesBuilder_ == null) {
          softwareRecipes_ = java.util.Collections.emptyList();
        } else {
          softwareRecipes_ = null;
          softwareRecipesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies
            .internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
          getDefaultInstanceForType() {
        return com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy build() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy buildPartial() {
        com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy result =
            new com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy result) {
        if (packagesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            packages_ = java.util.Collections.unmodifiableList(packages_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.packages_ = packages_;
        } else {
          result.packages_ = packagesBuilder_.build();
        }
        if (packageRepositoriesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            packageRepositories_ = java.util.Collections.unmodifiableList(packageRepositories_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.packageRepositories_ = packageRepositories_;
        } else {
          result.packageRepositories_ = packageRepositoriesBuilder_.build();
        }
        if (softwareRecipesBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            softwareRecipes_ = java.util.Collections.unmodifiableList(softwareRecipes_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.softwareRecipes_ = softwareRecipes_;
        } else {
          result.softwareRecipes_ = softwareRecipesBuilder_.build();
        }
      }

      private void buildPartial0(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy result) {
        int from_bitField0_ = bitField0_;
      }

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

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy) {
          return mergeFrom(
              (com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy other) {
        if (other
            == com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                .getDefaultInstance()) return this;
        if (packagesBuilder_ == null) {
          if (!other.packages_.isEmpty()) {
            if (packages_.isEmpty()) {
              packages_ = other.packages_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePackagesIsMutable();
              packages_.addAll(other.packages_);
            }
            onChanged();
          }
        } else {
          if (!other.packages_.isEmpty()) {
            if (packagesBuilder_.isEmpty()) {
              packagesBuilder_.dispose();
              packagesBuilder_ = null;
              packages_ = other.packages_;
              bitField0_ = (bitField0_ & ~0x00000001);
              packagesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getPackagesFieldBuilder()
                      : null;
            } else {
              packagesBuilder_.addAllMessages(other.packages_);
            }
          }
        }
        if (packageRepositoriesBuilder_ == null) {
          if (!other.packageRepositories_.isEmpty()) {
            if (packageRepositories_.isEmpty()) {
              packageRepositories_ = other.packageRepositories_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensurePackageRepositoriesIsMutable();
              packageRepositories_.addAll(other.packageRepositories_);
            }
            onChanged();
          }
        } else {
          if (!other.packageRepositories_.isEmpty()) {
            if (packageRepositoriesBuilder_.isEmpty()) {
              packageRepositoriesBuilder_.dispose();
              packageRepositoriesBuilder_ = null;
              packageRepositories_ = other.packageRepositories_;
              bitField0_ = (bitField0_ & ~0x00000002);
              packageRepositoriesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getPackageRepositoriesFieldBuilder()
                      : null;
            } else {
              packageRepositoriesBuilder_.addAllMessages(other.packageRepositories_);
            }
          }
        }
        if (softwareRecipesBuilder_ == null) {
          if (!other.softwareRecipes_.isEmpty()) {
            if (softwareRecipes_.isEmpty()) {
              softwareRecipes_ = other.softwareRecipes_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureSoftwareRecipesIsMutable();
              softwareRecipes_.addAll(other.softwareRecipes_);
            }
            onChanged();
          }
        } else {
          if (!other.softwareRecipes_.isEmpty()) {
            if (softwareRecipesBuilder_.isEmpty()) {
              softwareRecipesBuilder_.dispose();
              softwareRecipesBuilder_ = null;
              softwareRecipes_ = other.softwareRecipes_;
              bitField0_ = (bitField0_ & ~0x00000004);
              softwareRecipesBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getSoftwareRecipesFieldBuilder()
                      : null;
            } else {
              softwareRecipesBuilder_.addAllMessages(other.softwareRecipes_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                      m =
                          input.readMessage(
                              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                                  .SourcedPackage.parser(),
                              extensionRegistry);
                  if (packagesBuilder_ == null) {
                    ensurePackagesIsMutable();
                    packages_.add(m);
                  } else {
                    packagesBuilder_.addMessage(m);
                  }
                  break;
                } // case 10
              case 18:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                          .SourcedPackageRepository
                      m =
                          input.readMessage(
                              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                                  .SourcedPackageRepository.parser(),
                              extensionRegistry);
                  if (packageRepositoriesBuilder_ == null) {
                    ensurePackageRepositoriesIsMutable();
                    packageRepositories_.add(m);
                  } else {
                    packageRepositoriesBuilder_.addMessage(m);
                  }
                  break;
                } // case 18
              case 26:
                {
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                          .SourcedSoftwareRecipe
                      m =
                          input.readMessage(
                              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                                  .SourcedSoftwareRecipe.parser(),
                              extensionRegistry);
                  if (softwareRecipesBuilder_ == null) {
                    ensureSoftwareRecipesIsMutable();
                    softwareRecipes_.add(m);
                  } else {
                    softwareRecipesBuilder_.addMessage(m);
                  }
                  break;
                } // case 26
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage>
          packages_ = java.util.Collections.emptyList();

      private void ensurePackagesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          packages_ =
              new java.util.ArrayList<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackage>(packages_);
          bitField0_ |= 0x00000001;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                  .Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageOrBuilder>
          packagesBuilder_;

      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage>
          getPackagesList() {
        if (packagesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(packages_);
        } else {
          return packagesBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public int getPackagesCount() {
        if (packagesBuilder_ == null) {
          return packages_.size();
        } else {
          return packagesBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
          getPackages(int index) {
        if (packagesBuilder_ == null) {
          return packages_.get(index);
        } else {
          return packagesBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public Builder setPackages(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
              value) {
        if (packagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackagesIsMutable();
          packages_.set(index, value);
          onChanged();
        } else {
          packagesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public Builder setPackages(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage.Builder
              builderForValue) {
        if (packagesBuilder_ == null) {
          ensurePackagesIsMutable();
          packages_.set(index, builderForValue.build());
          onChanged();
        } else {
          packagesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public Builder addPackages(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
              value) {
        if (packagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackagesIsMutable();
          packages_.add(value);
          onChanged();
        } else {
          packagesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public Builder addPackages(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
              value) {
        if (packagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackagesIsMutable();
          packages_.add(index, value);
          onChanged();
        } else {
          packagesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public Builder addPackages(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage.Builder
              builderForValue) {
        if (packagesBuilder_ == null) {
          ensurePackagesIsMutable();
          packages_.add(builderForValue.build());
          onChanged();
        } else {
          packagesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public Builder addPackages(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage.Builder
              builderForValue) {
        if (packagesBuilder_ == null) {
          ensurePackagesIsMutable();
          packages_.add(index, builderForValue.build());
          onChanged();
        } else {
          packagesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public Builder addAllPackages(
          java.lang.Iterable<
                  ? extends
                      com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                          .SourcedPackage>
              values) {
        if (packagesBuilder_ == null) {
          ensurePackagesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packages_);
          onChanged();
        } else {
          packagesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public Builder clearPackages() {
        if (packagesBuilder_ == null) {
          packages_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          packagesBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public Builder removePackages(int index) {
        if (packagesBuilder_ == null) {
          ensurePackagesIsMutable();
          packages_.remove(index);
          onChanged();
        } else {
          packagesBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
              .Builder
          getPackagesBuilder(int index) {
        return getPackagesFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageOrBuilder
          getPackagesOrBuilder(int index) {
        if (packagesBuilder_ == null) {
          return packages_.get(index);
        } else {
          return packagesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public java.util.List<
              ? extends
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackageOrBuilder>
          getPackagesOrBuilderList() {
        if (packagesBuilder_ != null) {
          return packagesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(packages_);
        }
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
              .Builder
          addPackagesBuilder() {
        return getPackagesFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
              .Builder
          addPackagesBuilder(int index) {
        return getPackagesFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                    .getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * List of package configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackage packages = 1;
       * </code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                  .Builder>
          getPackagesBuilderList() {
        return getPackagesFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                  .Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageOrBuilder>
          getPackagesFieldBuilder() {
        if (packagesBuilder_ == null) {
          packagesBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackage,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedPackage
                      .Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackageOrBuilder>(
                  packages_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
          packages_ = null;
        }
        return packagesBuilder_;
      }

      private java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository>
          packageRepositories_ = java.util.Collections.emptyList();

      private void ensurePackageRepositoriesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          packageRepositories_ =
              new java.util.ArrayList<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackageRepository>(packageRepositories_);
          bitField0_ |= 0x00000002;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepositoryOrBuilder>
          packageRepositoriesBuilder_;

      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository>
          getPackageRepositoriesList() {
        if (packageRepositoriesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(packageRepositories_);
        } else {
          return packageRepositoriesBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public int getPackageRepositoriesCount() {
        if (packageRepositoriesBuilder_ == null) {
          return packageRepositories_.size();
        } else {
          return packageRepositoriesBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository
          getPackageRepositories(int index) {
        if (packageRepositoriesBuilder_ == null) {
          return packageRepositories_.get(index);
        } else {
          return packageRepositoriesBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public Builder setPackageRepositories(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository
              value) {
        if (packageRepositoriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.set(index, value);
          onChanged();
        } else {
          packageRepositoriesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public Builder setPackageRepositories(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository.Builder
              builderForValue) {
        if (packageRepositoriesBuilder_ == null) {
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.set(index, builderForValue.build());
          onChanged();
        } else {
          packageRepositoriesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public Builder addPackageRepositories(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository
              value) {
        if (packageRepositoriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.add(value);
          onChanged();
        } else {
          packageRepositoriesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public Builder addPackageRepositories(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository
              value) {
        if (packageRepositoriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.add(index, value);
          onChanged();
        } else {
          packageRepositoriesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public Builder addPackageRepositories(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository.Builder
              builderForValue) {
        if (packageRepositoriesBuilder_ == null) {
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.add(builderForValue.build());
          onChanged();
        } else {
          packageRepositoriesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public Builder addPackageRepositories(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository.Builder
              builderForValue) {
        if (packageRepositoriesBuilder_ == null) {
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.add(index, builderForValue.build());
          onChanged();
        } else {
          packageRepositoriesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public Builder addAllPackageRepositories(
          java.lang.Iterable<
                  ? extends
                      com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                          .SourcedPackageRepository>
              values) {
        if (packageRepositoriesBuilder_ == null) {
          ensurePackageRepositoriesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, packageRepositories_);
          onChanged();
        } else {
          packageRepositoriesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public Builder clearPackageRepositories() {
        if (packageRepositoriesBuilder_ == null) {
          packageRepositories_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          packageRepositoriesBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public Builder removePackageRepositories(int index) {
        if (packageRepositoriesBuilder_ == null) {
          ensurePackageRepositoriesIsMutable();
          packageRepositories_.remove(index);
          onChanged();
        } else {
          packageRepositoriesBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository.Builder
          getPackageRepositoriesBuilder(int index) {
        return getPackageRepositoriesFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepositoryOrBuilder
          getPackageRepositoriesOrBuilder(int index) {
        if (packageRepositoriesBuilder_ == null) {
          return packageRepositories_.get(index);
        } else {
          return packageRepositoriesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public java.util.List<
              ? extends
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackageRepositoryOrBuilder>
          getPackageRepositoriesOrBuilderList() {
        if (packageRepositoriesBuilder_ != null) {
          return packageRepositoriesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(packageRepositories_);
        }
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository.Builder
          addPackageRepositoriesBuilder() {
        return getPackageRepositoriesFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedPackageRepository.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedPackageRepository.Builder
          addPackageRepositoriesBuilder(int index) {
        return getPackageRepositoriesFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedPackageRepository.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * List of package repository configurations assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedPackageRepository package_repositories = 2;
       * </code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository.Builder>
          getPackageRepositoriesBuilderList() {
        return getPackageRepositoriesFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepository.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedPackageRepositoryOrBuilder>
          getPackageRepositoriesFieldBuilder() {
        if (packageRepositoriesBuilder_ == null) {
          packageRepositoriesBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackageRepository,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackageRepository.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedPackageRepositoryOrBuilder>(
                  packageRepositories_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          packageRepositories_ = null;
        }
        return packageRepositoriesBuilder_;
      }

      private java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipe>
          softwareRecipes_ = java.util.Collections.emptyList();

      private void ensureSoftwareRecipesIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          softwareRecipes_ =
              new java.util.ArrayList<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedSoftwareRecipe>(softwareRecipes_);
          bitField0_ |= 0x00000004;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipe,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipe.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipeOrBuilder>
          softwareRecipesBuilder_;

      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipe>
          getSoftwareRecipesList() {
        if (softwareRecipesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(softwareRecipes_);
        } else {
          return softwareRecipesBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public int getSoftwareRecipesCount() {
        if (softwareRecipesBuilder_ == null) {
          return softwareRecipes_.size();
        } else {
          return softwareRecipesBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe
          getSoftwareRecipes(int index) {
        if (softwareRecipesBuilder_ == null) {
          return softwareRecipes_.get(index);
        } else {
          return softwareRecipesBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public Builder setSoftwareRecipes(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
              value) {
        if (softwareRecipesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSoftwareRecipesIsMutable();
          softwareRecipes_.set(index, value);
          onChanged();
        } else {
          softwareRecipesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public Builder setSoftwareRecipes(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
                  .Builder
              builderForValue) {
        if (softwareRecipesBuilder_ == null) {
          ensureSoftwareRecipesIsMutable();
          softwareRecipes_.set(index, builderForValue.build());
          onChanged();
        } else {
          softwareRecipesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public Builder addSoftwareRecipes(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
              value) {
        if (softwareRecipesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSoftwareRecipesIsMutable();
          softwareRecipes_.add(value);
          onChanged();
        } else {
          softwareRecipesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public Builder addSoftwareRecipes(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
              value) {
        if (softwareRecipesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSoftwareRecipesIsMutable();
          softwareRecipes_.add(index, value);
          onChanged();
        } else {
          softwareRecipesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public Builder addSoftwareRecipes(
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
                  .Builder
              builderForValue) {
        if (softwareRecipesBuilder_ == null) {
          ensureSoftwareRecipesIsMutable();
          softwareRecipes_.add(builderForValue.build());
          onChanged();
        } else {
          softwareRecipesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public Builder addSoftwareRecipes(
          int index,
          com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy.SourcedSoftwareRecipe
                  .Builder
              builderForValue) {
        if (softwareRecipesBuilder_ == null) {
          ensureSoftwareRecipesIsMutable();
          softwareRecipes_.add(index, builderForValue.build());
          onChanged();
        } else {
          softwareRecipesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public Builder addAllSoftwareRecipes(
          java.lang.Iterable<
                  ? extends
                      com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                          .SourcedSoftwareRecipe>
              values) {
        if (softwareRecipesBuilder_ == null) {
          ensureSoftwareRecipesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, softwareRecipes_);
          onChanged();
        } else {
          softwareRecipesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public Builder clearSoftwareRecipes() {
        if (softwareRecipesBuilder_ == null) {
          softwareRecipes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          softwareRecipesBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public Builder removeSoftwareRecipes(int index) {
        if (softwareRecipesBuilder_ == null) {
          ensureSoftwareRecipesIsMutable();
          softwareRecipes_.remove(index);
          onChanged();
        } else {
          softwareRecipesBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe.Builder
          getSoftwareRecipesBuilder(int index) {
        return getSoftwareRecipesFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipeOrBuilder
          getSoftwareRecipesOrBuilder(int index) {
        if (softwareRecipesBuilder_ == null) {
          return softwareRecipes_.get(index);
        } else {
          return softwareRecipesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public java.util.List<
              ? extends
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedSoftwareRecipeOrBuilder>
          getSoftwareRecipesOrBuilderList() {
        if (softwareRecipesBuilder_ != null) {
          return softwareRecipesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(softwareRecipes_);
        }
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe.Builder
          addSoftwareRecipesBuilder() {
        return getSoftwareRecipesFieldBuilder()
            .addBuilder(
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedSoftwareRecipe.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
              .SourcedSoftwareRecipe.Builder
          addSoftwareRecipesBuilder(int index) {
        return getSoftwareRecipesFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                    .SourcedSoftwareRecipe.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * List of recipes assigned to the VM instance.
       * </pre>
       *
       * <code>
       * repeated .google.cloud.osconfig.v1beta.EffectiveGuestPolicy.SourcedSoftwareRecipe software_recipes = 3;
       * </code>
       */
      public java.util.List<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipe.Builder>
          getSoftwareRecipesBuilderList() {
        return getSoftwareRecipesFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipe,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipe.Builder,
              com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                  .SourcedSoftwareRecipeOrBuilder>
          getSoftwareRecipesFieldBuilder() {
        if (softwareRecipesBuilder_ == null) {
          softwareRecipesBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedSoftwareRecipe,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedSoftwareRecipe.Builder,
                  com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
                      .SourcedSoftwareRecipeOrBuilder>(
                  softwareRecipes_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          softwareRecipes_ = null;
        }
        return softwareRecipesBuilder_;
      }

      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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

      // @@protoc_insertion_point(builder_scope:google.cloud.osconfig.v1beta.EffectiveGuestPolicy)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.osconfig.v1beta.EffectiveGuestPolicy)
    private static final com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy();
    }

    public static com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public com.google.cloud.osconfig.v1beta.GuestPolicies.EffectiveGuestPolicy
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_GuestPolicy_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_GuestPolicy_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_Assignment_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_Assignment_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_LabelsEntry_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_LabelsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_Assignment_OsType_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_Assignment_OsType_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_Package_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_Package_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_AptRepository_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_AptRepository_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_YumRepository_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_YumRepository_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_ZypperRepository_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_ZypperRepository_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_GooRepository_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_GooRepository_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_PackageRepository_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_PackageRepository_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Remote_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Remote_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Gcs_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Gcs_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_CopyFile_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_CopyFile_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExtractArchive_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExtractArchive_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallMsi_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallMsi_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallDpkg_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallDpkg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallRpm_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallRpm_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExecFile_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExecFile_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_RunScript_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_RunScript_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_CreateGuestPolicyRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_CreateGuestPolicyRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_GetGuestPolicyRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_GetGuestPolicyRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesResponse_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_UpdateGuestPolicyRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_UpdateGuestPolicyRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_DeleteGuestPolicyRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_DeleteGuestPolicyRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_LookupEffectiveGuestPolicyRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_LookupEffectiveGuestPolicyRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackage_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackageRepository_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackageRepository_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedSoftwareRecipe_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedSoftwareRecipe_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
    return descriptor;
  }

  private static com.google.protobuf.Descriptors.FileDescriptor descriptor;

  static {
    java.lang.String[] descriptorData = {
      "\n1google/cloud/osconfig/v1beta/guest_pol"
          + "icies.proto\022\034google.cloud.osconfig.v1bet"
          + "a\032\037google/api/field_behavior.proto\032\031goog"
          + "le/api/resource.proto\032 google/protobuf/f"
          + "ield_mask.proto\032\037google/protobuf/timesta"
          + "mp.proto\"\224\004\n\013GuestPolicy\022\021\n\004name\030\001 \001(\tB\003"
          + "\340A\002\022\023\n\013description\030\002 \001(\t\0224\n\013create_time\030"
          + "\003 \001(\0132\032.google.protobuf.TimestampB\003\340A\003\0224"
          + "\n\013update_time\030\004 \001(\0132\032.google.protobuf.Ti"
          + "mestampB\003\340A\003\022A\n\nassignment\030\006 \001(\0132(.googl"
          + "e.cloud.osconfig.v1beta.AssignmentB\003\340A\002\022"
          + "7\n\010packages\030\007 \003(\0132%.google.cloud.osconfi"
          + "g.v1beta.Package\022M\n\024package_repositories"
          + "\030\010 \003(\0132/.google.cloud.osconfig.v1beta.Pa"
          + "ckageRepository\022=\n\007recipes\030\t \003(\0132,.googl"
          + "e.cloud.osconfig.v1beta.SoftwareRecipe\022\014"
          + "\n\004etag\030\n \001(\t:Y\352AV\n#osconfig.googleapis.c"
          + "om/GuestPolicy\022/projects/{project}/guest"
          + "Policies/{guest_policy}\"\271\003\n\nAssignment\022I"
          + "\n\014group_labels\030\001 \003(\01323.google.cloud.osco"
          + "nfig.v1beta.Assignment.GroupLabel\022\r\n\005zon"
          + "es\030\002 \003(\t\022\021\n\tinstances\030\003 \003(\t\022\036\n\026instance_"
          + "name_prefixes\030\004 \003(\t\022A\n\010os_types\030\005 \003(\0132/."
          + "google.cloud.osconfig.v1beta.Assignment."
          + "OsType\032\214\001\n\nGroupLabel\022O\n\006labels\030\001 \003(\0132?."
          + "google.cloud.osconfig.v1beta.Assignment."
          + "GroupLabel.LabelsEntry\032-\n\013LabelsEntry\022\013\n"
          + "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\032L\n\006OsType\022"
          + "\025\n\ros_short_name\030\001 \001(\t\022\022\n\nos_version\030\002 \001"
          + "(\t\022\027\n\017os_architecture\030\003 \001(\t\"\363\001\n\007Package\022"
          + "\021\n\004name\030\001 \001(\tB\003\340A\002\022A\n\rdesired_state\030\002 \001("
          + "\0162*.google.cloud.osconfig.v1beta.Desired"
          + "State\022>\n\007manager\030\003 \001(\0162-.google.cloud.os"
          + "config.v1beta.Package.Manager\"R\n\007Manager"
          + "\022\027\n\023MANAGER_UNSPECIFIED\020\000\022\007\n\003ANY\020\001\022\007\n\003AP"
          + "T\020\002\022\007\n\003YUM\020\003\022\n\n\006ZYPPER\020\004\022\007\n\003GOO\020\005\"\370\001\n\rAp"
          + "tRepository\022M\n\014archive_type\030\001 \001(\01627.goog"
          + "le.cloud.osconfig.v1beta.AptRepository.A"
          + "rchiveType\022\020\n\003uri\030\002 \001(\tB\003\340A\002\022\031\n\014distribu"
          + "tion\030\003 \001(\tB\003\340A\002\022\027\n\ncomponents\030\004 \003(\tB\003\340A\002"
          + "\022\017\n\007gpg_key\030\005 \001(\t\"A\n\013ArchiveType\022\034\n\030ARCH"
          + "IVE_TYPE_UNSPECIFIED\020\000\022\007\n\003DEB\020\001\022\013\n\007DEB_S"
          + "RC\020\002\"_\n\rYumRepository\022\017\n\002id\030\001 \001(\tB\003\340A\002\022\024"
          + "\n\014display_name\030\002 \001(\t\022\025\n\010base_url\030\003 \001(\tB\003"
          + "\340A\002\022\020\n\010gpg_keys\030\004 \003(\t\"b\n\020ZypperRepositor"
          + "y\022\017\n\002id\030\001 \001(\tB\003\340A\002\022\024\n\014display_name\030\002 \001(\t"
          + "\022\025\n\010base_url\030\003 \001(\tB\003\340A\002\022\020\n\010gpg_keys\030\004 \003("
          + "\t\"4\n\rGooRepository\022\021\n\004name\030\001 \001(\tB\003\340A\002\022\020\n"
          + "\003url\030\002 \001(\tB\003\340A\002\"\227\002\n\021PackageRepository\022:\n"
          + "\003apt\030\001 \001(\0132+.google.cloud.osconfig.v1bet"
          + "a.AptRepositoryH\000\022:\n\003yum\030\002 \001(\0132+.google."
          + "cloud.osconfig.v1beta.YumRepositoryH\000\022@\n"
          + "\006zypper\030\003 \001(\0132..google.cloud.osconfig.v1"
          + "beta.ZypperRepositoryH\000\022:\n\003goo\030\004 \001(\0132+.g"
          + "oogle.cloud.osconfig.v1beta.GooRepositor"
          + "yH\000B\014\n\nrepository\"\206\021\n\016SoftwareRecipe\022\021\n\004"
          + "name\030\001 \001(\tB\003\340A\002\022\017\n\007version\030\002 \001(\t\022H\n\tarti"
          + "facts\030\003 \003(\01325.google.cloud.osconfig.v1be"
          + "ta.SoftwareRecipe.Artifact\022H\n\rinstall_st"
          + "eps\030\004 \003(\01321.google.cloud.osconfig.v1beta"
          + ".SoftwareRecipe.Step\022G\n\014update_steps\030\005 \003"
          + "(\01321.google.cloud.osconfig.v1beta.Softwa"
          + "reRecipe.Step\022A\n\rdesired_state\030\006 \001(\0162*.g"
          + "oogle.cloud.osconfig.v1beta.DesiredState"
          + "\032\275\002\n\010Artifact\022\017\n\002id\030\001 \001(\tB\003\340A\002\022N\n\006remote"
          + "\030\002 \001(\0132<.google.cloud.osconfig.v1beta.So"
          + "ftwareRecipe.Artifact.RemoteH\000\022H\n\003gcs\030\003 "
          + "\001(\01329.google.cloud.osconfig.v1beta.Softw"
          + "areRecipe.Artifact.GcsH\000\022\026\n\016allow_insecu"
          + "re\030\004 \001(\010\032\'\n\006Remote\022\013\n\003uri\030\001 \001(\t\022\020\n\010check"
          + "sum\030\002 \001(\t\0329\n\003Gcs\022\016\n\006bucket\030\001 \001(\t\022\016\n\006obje"
          + "ct\030\002 \001(\t\022\022\n\ngeneration\030\003 \001(\003B\n\n\010artifact"
          + "\032\357\013\n\004Step\022O\n\tfile_copy\030\001 \001(\0132:.google.cl"
          + "oud.osconfig.v1beta.SoftwareRecipe.Step."
          + "CopyFileH\000\022^\n\022archive_extraction\030\002 \001(\0132@"
          + ".google.cloud.osconfig.v1beta.SoftwareRe"
          + "cipe.Step.ExtractArchiveH\000\022X\n\020msi_instal"
          + "lation\030\003 \001(\0132<.google.cloud.osconfig.v1b"
          + "eta.SoftwareRecipe.Step.InstallMsiH\000\022Z\n\021"
          + "dpkg_installation\030\004 \001(\0132=.google.cloud.o"
          + "sconfig.v1beta.SoftwareRecipe.Step.Insta"
          + "llDpkgH\000\022X\n\020rpm_installation\030\005 \001(\0132<.goo"
          + "gle.cloud.osconfig.v1beta.SoftwareRecipe"
          + ".Step.InstallRpmH\000\022O\n\tfile_exec\030\006 \001(\0132:."
          + "google.cloud.osconfig.v1beta.SoftwareRec"
          + "ipe.Step.ExecFileH\000\022Q\n\nscript_run\030\007 \001(\0132"
          + ";.google.cloud.osconfig.v1beta.SoftwareR"
          + "ecipe.Step.RunScriptH\000\032f\n\010CopyFile\022\030\n\013ar"
          + "tifact_id\030\001 \001(\tB\003\340A\002\022\030\n\013destination\030\002 \001("
          + "\tB\003\340A\002\022\021\n\toverwrite\030\003 \001(\010\022\023\n\013permissions"
          + "\030\004 \001(\t\032\225\002\n\016ExtractArchive\022\030\n\013artifact_id"
          + "\030\001 \001(\tB\003\340A\002\022\023\n\013destination\030\002 \001(\t\022_\n\004type"
          + "\030\003 \001(\0162L.google.cloud.osconfig.v1beta.So"
          + "ftwareRecipe.Step.ExtractArchive.Archive"
          + "TypeB\003\340A\002\"s\n\013ArchiveType\022\034\n\030ARCHIVE_TYPE"
          + "_UNSPECIFIED\020\000\022\007\n\003TAR\020\001\022\014\n\010TAR_GZIP\020\002\022\014\n"
          + "\010TAR_BZIP\020\003\022\014\n\010TAR_LZMA\020\004\022\n\n\006TAR_XZ\020\005\022\007\n"
          + "\003ZIP\020\013\032Q\n\nInstallMsi\022\030\n\013artifact_id\030\001 \001("
          + "\tB\003\340A\002\022\r\n\005flags\030\002 \003(\t\022\032\n\022allowed_exit_co"
          + "des\030\003 \003(\005\032\'\n\013InstallDpkg\022\030\n\013artifact_id\030"
          + "\001 \001(\tB\003\340A\002\032&\n\nInstallRpm\022\030\n\013artifact_id\030"
          + "\001 \001(\tB\003\340A\002\032r\n\010ExecFile\022\025\n\013artifact_id\030\001 "
          + "\001(\tH\000\022\024\n\nlocal_path\030\002 \001(\tH\000\022\014\n\004args\030\003 \003("
          + "\t\022\032\n\022allowed_exit_codes\030\004 \003(\005B\017\n\rlocatio"
          + "n_type\032\341\001\n\tRunScript\022\023\n\006script\030\001 \001(\tB\003\340A"
          + "\002\022\032\n\022allowed_exit_codes\030\002 \003(\005\022\\\n\013interpr"
          + "eter\030\003 \001(\0162G.google.cloud.osconfig.v1bet"
          + "a.SoftwareRecipe.Step.RunScript.Interpre"
          + "ter\"E\n\013Interpreter\022\033\n\027INTERPRETER_UNSPEC"
          + "IFIED\020\000\022\t\n\005SHELL\020\001\022\016\n\nPOWERSHELL\020\003B\006\n\004st"
          + "ep\"\273\001\n\030CreateGuestPolicyRequest\022;\n\006paren"
          + "t\030\001 \001(\tB+\340A\002\372A%\022#osconfig.googleapis.com"
          + "/GuestPolicy\022\034\n\017guest_policy_id\030\002 \001(\tB\003\340"
          + "A\002\022D\n\014guest_policy\030\003 \001(\0132).google.cloud."
          + "osconfig.v1beta.GuestPolicyB\003\340A\002\"R\n\025GetG"
          + "uestPolicyRequest\0229\n\004name\030\001 \001(\tB+\340A\002\372A%\n"
          + "#osconfig.googleapis.com/GuestPolicy\"~\n\030"
          + "ListGuestPoliciesRequest\022;\n\006parent\030\001 \001(\t"
          + "B+\340A\002\372A%\022#osconfig.googleapis.com/GuestP"
          + "olicy\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npage_token\030\003"
          + " \001(\t\"w\n\031ListGuestPoliciesResponse\022A\n\016gue"
          + "st_policies\030\001 \003(\0132).google.cloud.osconfi"
          + "g.v1beta.GuestPolicy\022\027\n\017next_page_token\030"
          + "\002 \001(\t\"\221\001\n\030UpdateGuestPolicyRequest\022D\n\014gu"
          + "est_policy\030\001 \001(\0132).google.cloud.osconfig"
          + ".v1beta.GuestPolicyB\003\340A\002\022/\n\013update_mask\030"
          + "\002 \001(\0132\032.google.protobuf.FieldMask\"U\n\030Del"
          + "eteGuestPolicyRequest\0229\n\004name\030\001 \001(\tB+\340A\002"
          + "\372A%\n#osconfig.googleapis.com/GuestPolicy"
          + "\"~\n!LookupEffectiveGuestPolicyRequest\022\025\n"
          + "\010instance\030\001 \001(\tB\003\340A\002\022\025\n\ros_short_name\030\002 "
          + "\001(\t\022\022\n\nos_version\030\003 \001(\t\022\027\n\017os_architectu"
          + "re\030\004 \001(\t\"\375\004\n\024EffectiveGuestPolicy\022S\n\010pac"
          + "kages\030\001 \003(\0132A.google.cloud.osconfig.v1be"
          + "ta.EffectiveGuestPolicy.SourcedPackage\022i"
          + "\n\024package_repositories\030\002 \003(\0132K.google.cl"
          + "oud.osconfig.v1beta.EffectiveGuestPolicy"
          + ".SourcedPackageRepository\022b\n\020software_re"
          + "cipes\030\003 \003(\0132H.google.cloud.osconfig.v1be"
          + "ta.EffectiveGuestPolicy.SourcedSoftwareR"
          + "ecipe\032X\n\016SourcedPackage\022\016\n\006source\030\001 \001(\t\022"
          + "6\n\007package\030\002 \001(\0132%.google.cloud.osconfig"
          + ".v1beta.Package\032w\n\030SourcedPackageReposit"
          + "ory\022\016\n\006source\030\001 \001(\t\022K\n\022package_repositor"
          + "y\030\002 \001(\0132/.google.cloud.osconfig.v1beta.P"
          + "ackageRepository\032n\n\025SourcedSoftwareRecip"
          + "e\022\016\n\006source\030\001 \001(\t\022E\n\017software_recipe\030\002 \001"
          + "(\0132,.google.cloud.osconfig.v1beta.Softwa"
          + "reRecipe*V\n\014DesiredState\022\035\n\031DESIRED_STAT"
          + "E_UNSPECIFIED\020\000\022\r\n\tINSTALLED\020\001\022\013\n\007UPDATE"
          + "D\020\002\022\013\n\007REMOVED\020\003Bo\n com.google.cloud.osc"
          + "onfig.v1betaB\rGuestPoliciesZ<cloud.googl"
          + "e.com/go/osconfig/apiv1beta/osconfigpb;o"
          + "sconfigpbb\006proto3"
    };
    descriptor =
        com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
            descriptorData,
            new com.google.protobuf.Descriptors.FileDescriptor[] {
              com.google.api.FieldBehaviorProto.getDescriptor(),
              com.google.api.ResourceProto.getDescriptor(),
              com.google.protobuf.FieldMaskProto.getDescriptor(),
              com.google.protobuf.TimestampProto.getDescriptor(),
            });
    internal_static_google_cloud_osconfig_v1beta_GuestPolicy_descriptor =
        getDescriptor().getMessageTypes().get(0);
    internal_static_google_cloud_osconfig_v1beta_GuestPolicy_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_GuestPolicy_descriptor,
            new java.lang.String[] {
              "Name",
              "Description",
              "CreateTime",
              "UpdateTime",
              "Assignment",
              "Packages",
              "PackageRepositories",
              "Recipes",
              "Etag",
            });
    internal_static_google_cloud_osconfig_v1beta_Assignment_descriptor =
        getDescriptor().getMessageTypes().get(1);
    internal_static_google_cloud_osconfig_v1beta_Assignment_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_Assignment_descriptor,
            new java.lang.String[] {
              "GroupLabels", "Zones", "Instances", "InstanceNamePrefixes", "OsTypes",
            });
    internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_descriptor =
        internal_static_google_cloud_osconfig_v1beta_Assignment_descriptor.getNestedTypes().get(0);
    internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_descriptor,
            new java.lang.String[] {
              "Labels",
            });
    internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_LabelsEntry_descriptor =
        internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_descriptor
            .getNestedTypes()
            .get(0);
    internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_LabelsEntry_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_Assignment_GroupLabel_LabelsEntry_descriptor,
            new java.lang.String[] {
              "Key", "Value",
            });
    internal_static_google_cloud_osconfig_v1beta_Assignment_OsType_descriptor =
        internal_static_google_cloud_osconfig_v1beta_Assignment_descriptor.getNestedTypes().get(1);
    internal_static_google_cloud_osconfig_v1beta_Assignment_OsType_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_Assignment_OsType_descriptor,
            new java.lang.String[] {
              "OsShortName", "OsVersion", "OsArchitecture",
            });
    internal_static_google_cloud_osconfig_v1beta_Package_descriptor =
        getDescriptor().getMessageTypes().get(2);
    internal_static_google_cloud_osconfig_v1beta_Package_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_Package_descriptor,
            new java.lang.String[] {
              "Name", "DesiredState", "Manager",
            });
    internal_static_google_cloud_osconfig_v1beta_AptRepository_descriptor =
        getDescriptor().getMessageTypes().get(3);
    internal_static_google_cloud_osconfig_v1beta_AptRepository_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_AptRepository_descriptor,
            new java.lang.String[] {
              "ArchiveType", "Uri", "Distribution", "Components", "GpgKey",
            });
    internal_static_google_cloud_osconfig_v1beta_YumRepository_descriptor =
        getDescriptor().getMessageTypes().get(4);
    internal_static_google_cloud_osconfig_v1beta_YumRepository_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_YumRepository_descriptor,
            new java.lang.String[] {
              "Id", "DisplayName", "BaseUrl", "GpgKeys",
            });
    internal_static_google_cloud_osconfig_v1beta_ZypperRepository_descriptor =
        getDescriptor().getMessageTypes().get(5);
    internal_static_google_cloud_osconfig_v1beta_ZypperRepository_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_ZypperRepository_descriptor,
            new java.lang.String[] {
              "Id", "DisplayName", "BaseUrl", "GpgKeys",
            });
    internal_static_google_cloud_osconfig_v1beta_GooRepository_descriptor =
        getDescriptor().getMessageTypes().get(6);
    internal_static_google_cloud_osconfig_v1beta_GooRepository_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_GooRepository_descriptor,
            new java.lang.String[] {
              "Name", "Url",
            });
    internal_static_google_cloud_osconfig_v1beta_PackageRepository_descriptor =
        getDescriptor().getMessageTypes().get(7);
    internal_static_google_cloud_osconfig_v1beta_PackageRepository_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_PackageRepository_descriptor,
            new java.lang.String[] {
              "Apt", "Yum", "Zypper", "Goo", "Repository",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_descriptor =
        getDescriptor().getMessageTypes().get(8);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_descriptor,
            new java.lang.String[] {
              "Name", "Version", "Artifacts", "InstallSteps", "UpdateSteps", "DesiredState",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_descriptor
            .getNestedTypes()
            .get(0);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_descriptor,
            new java.lang.String[] {
              "Id", "Remote", "Gcs", "AllowInsecure", "Artifact",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Remote_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_descriptor
            .getNestedTypes()
            .get(0);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Remote_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Remote_descriptor,
            new java.lang.String[] {
              "Uri", "Checksum",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Gcs_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_descriptor
            .getNestedTypes()
            .get(1);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Gcs_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Artifact_Gcs_descriptor,
            new java.lang.String[] {
              "Bucket", "Object", "Generation",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_descriptor
            .getNestedTypes()
            .get(1);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor,
            new java.lang.String[] {
              "FileCopy",
              "ArchiveExtraction",
              "MsiInstallation",
              "DpkgInstallation",
              "RpmInstallation",
              "FileExec",
              "ScriptRun",
              "Step",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_CopyFile_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor
            .getNestedTypes()
            .get(0);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_CopyFile_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_CopyFile_descriptor,
            new java.lang.String[] {
              "ArtifactId", "Destination", "Overwrite", "Permissions",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExtractArchive_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor
            .getNestedTypes()
            .get(1);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExtractArchive_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExtractArchive_descriptor,
            new java.lang.String[] {
              "ArtifactId", "Destination", "Type",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallMsi_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor
            .getNestedTypes()
            .get(2);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallMsi_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallMsi_descriptor,
            new java.lang.String[] {
              "ArtifactId", "Flags", "AllowedExitCodes",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallDpkg_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor
            .getNestedTypes()
            .get(3);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallDpkg_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallDpkg_descriptor,
            new java.lang.String[] {
              "ArtifactId",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallRpm_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor
            .getNestedTypes()
            .get(4);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallRpm_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_InstallRpm_descriptor,
            new java.lang.String[] {
              "ArtifactId",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExecFile_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor
            .getNestedTypes()
            .get(5);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExecFile_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_ExecFile_descriptor,
            new java.lang.String[] {
              "ArtifactId", "LocalPath", "Args", "AllowedExitCodes", "LocationType",
            });
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_RunScript_descriptor =
        internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_descriptor
            .getNestedTypes()
            .get(6);
    internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_RunScript_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_SoftwareRecipe_Step_RunScript_descriptor,
            new java.lang.String[] {
              "Script", "AllowedExitCodes", "Interpreter",
            });
    internal_static_google_cloud_osconfig_v1beta_CreateGuestPolicyRequest_descriptor =
        getDescriptor().getMessageTypes().get(9);
    internal_static_google_cloud_osconfig_v1beta_CreateGuestPolicyRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_CreateGuestPolicyRequest_descriptor,
            new java.lang.String[] {
              "Parent", "GuestPolicyId", "GuestPolicy",
            });
    internal_static_google_cloud_osconfig_v1beta_GetGuestPolicyRequest_descriptor =
        getDescriptor().getMessageTypes().get(10);
    internal_static_google_cloud_osconfig_v1beta_GetGuestPolicyRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_GetGuestPolicyRequest_descriptor,
            new java.lang.String[] {
              "Name",
            });
    internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesRequest_descriptor =
        getDescriptor().getMessageTypes().get(11);
    internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesRequest_descriptor,
            new java.lang.String[] {
              "Parent", "PageSize", "PageToken",
            });
    internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesResponse_descriptor =
        getDescriptor().getMessageTypes().get(12);
    internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesResponse_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_ListGuestPoliciesResponse_descriptor,
            new java.lang.String[] {
              "GuestPolicies", "NextPageToken",
            });
    internal_static_google_cloud_osconfig_v1beta_UpdateGuestPolicyRequest_descriptor =
        getDescriptor().getMessageTypes().get(13);
    internal_static_google_cloud_osconfig_v1beta_UpdateGuestPolicyRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_UpdateGuestPolicyRequest_descriptor,
            new java.lang.String[] {
              "GuestPolicy", "UpdateMask",
            });
    internal_static_google_cloud_osconfig_v1beta_DeleteGuestPolicyRequest_descriptor =
        getDescriptor().getMessageTypes().get(14);
    internal_static_google_cloud_osconfig_v1beta_DeleteGuestPolicyRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_DeleteGuestPolicyRequest_descriptor,
            new java.lang.String[] {
              "Name",
            });
    internal_static_google_cloud_osconfig_v1beta_LookupEffectiveGuestPolicyRequest_descriptor =
        getDescriptor().getMessageTypes().get(15);
    internal_static_google_cloud_osconfig_v1beta_LookupEffectiveGuestPolicyRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_LookupEffectiveGuestPolicyRequest_descriptor,
            new java.lang.String[] {
              "Instance", "OsShortName", "OsVersion", "OsArchitecture",
            });
    internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_descriptor =
        getDescriptor().getMessageTypes().get(16);
    internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_descriptor,
            new java.lang.String[] {
              "Packages", "PackageRepositories", "SoftwareRecipes",
            });
    internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackage_descriptor =
        internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_descriptor
            .getNestedTypes()
            .get(0);
    internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackage_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackage_descriptor,
            new java.lang.String[] {
              "Source", "Package",
            });
    internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackageRepository_descriptor =
        internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_descriptor
            .getNestedTypes()
            .get(1);
    internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackageRepository_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedPackageRepository_descriptor,
            new java.lang.String[] {
              "Source", "PackageRepository",
            });
    internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedSoftwareRecipe_descriptor =
        internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_descriptor
            .getNestedTypes()
            .get(2);
    internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedSoftwareRecipe_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_osconfig_v1beta_EffectiveGuestPolicy_SourcedSoftwareRecipe_descriptor,
            new java.lang.String[] {
              "Source", "SoftwareRecipe",
            });
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(com.google.api.FieldBehaviorProto.fieldBehavior);
    registry.add(com.google.api.ResourceProto.resource);
    registry.add(com.google.api.ResourceProto.resourceReference);
    com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor(
        descriptor, registry);
    com.google.api.FieldBehaviorProto.getDescriptor();
    com.google.api.ResourceProto.getDescriptor();
    com.google.protobuf.FieldMaskProto.getDescriptor();
    com.google.protobuf.TimestampProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
