/*
 * 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/vmmigration/v1/vmmigration.proto

package com.google.cloud.vmmigration.v1;

/**
 *
 *
 * <pre>
 * ComputeEngineTargetDefaults is a collection of details for creating a VM in a
 * target Compute Engine project.
 * </pre>
 *
 * Protobuf type {@code google.cloud.vmmigration.v1.ComputeEngineTargetDefaults}
 */
public final class ComputeEngineTargetDefaults extends com.google.protobuf.GeneratedMessageV3
    implements
    // @@protoc_insertion_point(message_implements:google.cloud.vmmigration.v1.ComputeEngineTargetDefaults)
    ComputeEngineTargetDefaultsOrBuilder {
  private static final long serialVersionUID = 0L;
  // Use ComputeEngineTargetDefaults.newBuilder() to construct.
  private ComputeEngineTargetDefaults(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private ComputeEngineTargetDefaults() {
    vmName_ = "";
    targetProject_ = "";
    zone_ = "";
    machineTypeSeries_ = "";
    machineType_ = "";
    networkTags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    networkInterfaces_ = java.util.Collections.emptyList();
    serviceAccount_ = "";
    diskType_ = 0;
    licenseType_ = 0;
    bootOption_ = 0;
    additionalLicenses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    hostname_ = "";
  }

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

  @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.vmmigration.v1.VmMigrationProto
        .internal_static_google_cloud_vmmigration_v1_ComputeEngineTargetDefaults_descriptor;
  }

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

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.cloud.vmmigration.v1.VmMigrationProto
        .internal_static_google_cloud_vmmigration_v1_ComputeEngineTargetDefaults_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults.class,
            com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults.Builder.class);
  }

  public static final int VM_NAME_FIELD_NUMBER = 1;

  @SuppressWarnings("serial")
  private volatile java.lang.Object vmName_ = "";
  /**
   *
   *
   * <pre>
   * The name of the VM to create.
   * </pre>
   *
   * <code>string vm_name = 1;</code>
   *
   * @return The vmName.
   */
  @java.lang.Override
  public java.lang.String getVmName() {
    java.lang.Object ref = vmName_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      vmName_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * The name of the VM to create.
   * </pre>
   *
   * <code>string vm_name = 1;</code>
   *
   * @return The bytes for vmName.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getVmNameBytes() {
    java.lang.Object ref = vmName_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      vmName_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int TARGET_PROJECT_FIELD_NUMBER = 2;

  @SuppressWarnings("serial")
  private volatile java.lang.Object targetProject_ = "";
  /**
   *
   *
   * <pre>
   * The full path of the resource of type TargetProject which represents the
   * Compute Engine project in which to create this VM.
   * </pre>
   *
   * <code>string target_project = 2 [(.google.api.resource_reference) = { ... }</code>
   *
   * @return The targetProject.
   */
  @java.lang.Override
  public java.lang.String getTargetProject() {
    java.lang.Object ref = targetProject_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      targetProject_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * The full path of the resource of type TargetProject which represents the
   * Compute Engine project in which to create this VM.
   * </pre>
   *
   * <code>string target_project = 2 [(.google.api.resource_reference) = { ... }</code>
   *
   * @return The bytes for targetProject.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getTargetProjectBytes() {
    java.lang.Object ref = targetProject_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      targetProject_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int ZONE_FIELD_NUMBER = 3;

  @SuppressWarnings("serial")
  private volatile java.lang.Object zone_ = "";
  /**
   *
   *
   * <pre>
   * The zone in which to create the VM.
   * </pre>
   *
   * <code>string zone = 3;</code>
   *
   * @return The zone.
   */
  @java.lang.Override
  public java.lang.String getZone() {
    java.lang.Object ref = zone_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      zone_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * The zone in which to create the VM.
   * </pre>
   *
   * <code>string zone = 3;</code>
   *
   * @return The bytes for zone.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getZoneBytes() {
    java.lang.Object ref = zone_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      zone_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int MACHINE_TYPE_SERIES_FIELD_NUMBER = 4;

  @SuppressWarnings("serial")
  private volatile java.lang.Object machineTypeSeries_ = "";
  /**
   *
   *
   * <pre>
   * The machine type series to create the VM with.
   * </pre>
   *
   * <code>string machine_type_series = 4;</code>
   *
   * @return The machineTypeSeries.
   */
  @java.lang.Override
  public java.lang.String getMachineTypeSeries() {
    java.lang.Object ref = machineTypeSeries_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      machineTypeSeries_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * The machine type series to create the VM with.
   * </pre>
   *
   * <code>string machine_type_series = 4;</code>
   *
   * @return The bytes for machineTypeSeries.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getMachineTypeSeriesBytes() {
    java.lang.Object ref = machineTypeSeries_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      machineTypeSeries_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int MACHINE_TYPE_FIELD_NUMBER = 5;

  @SuppressWarnings("serial")
  private volatile java.lang.Object machineType_ = "";
  /**
   *
   *
   * <pre>
   * The machine type to create the VM with.
   * </pre>
   *
   * <code>string machine_type = 5;</code>
   *
   * @return The machineType.
   */
  @java.lang.Override
  public java.lang.String getMachineType() {
    java.lang.Object ref = machineType_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      machineType_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * The machine type to create the VM with.
   * </pre>
   *
   * <code>string machine_type = 5;</code>
   *
   * @return The bytes for machineType.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getMachineTypeBytes() {
    java.lang.Object ref = machineType_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      machineType_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int NETWORK_TAGS_FIELD_NUMBER = 6;

  @SuppressWarnings("serial")
  private com.google.protobuf.LazyStringList networkTags_;
  /**
   *
   *
   * <pre>
   * A map of network tags to associate with the VM.
   * </pre>
   *
   * <code>repeated string network_tags = 6;</code>
   *
   * @return A list containing the networkTags.
   */
  public com.google.protobuf.ProtocolStringList getNetworkTagsList() {
    return networkTags_;
  }
  /**
   *
   *
   * <pre>
   * A map of network tags to associate with the VM.
   * </pre>
   *
   * <code>repeated string network_tags = 6;</code>
   *
   * @return The count of networkTags.
   */
  public int getNetworkTagsCount() {
    return networkTags_.size();
  }
  /**
   *
   *
   * <pre>
   * A map of network tags to associate with the VM.
   * </pre>
   *
   * <code>repeated string network_tags = 6;</code>
   *
   * @param index The index of the element to return.
   * @return The networkTags at the given index.
   */
  public java.lang.String getNetworkTags(int index) {
    return networkTags_.get(index);
  }
  /**
   *
   *
   * <pre>
   * A map of network tags to associate with the VM.
   * </pre>
   *
   * <code>repeated string network_tags = 6;</code>
   *
   * @param index The index of the value to return.
   * @return The bytes of the networkTags at the given index.
   */
  public com.google.protobuf.ByteString getNetworkTagsBytes(int index) {
    return networkTags_.getByteString(index);
  }

  public static final int NETWORK_INTERFACES_FIELD_NUMBER = 7;

  @SuppressWarnings("serial")
  private java.util.List<com.google.cloud.vmmigration.v1.NetworkInterface> networkInterfaces_;
  /**
   *
   *
   * <pre>
   * List of NICs connected to this VM.
   * </pre>
   *
   * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
   */
  @java.lang.Override
  public java.util.List<com.google.cloud.vmmigration.v1.NetworkInterface>
      getNetworkInterfacesList() {
    return networkInterfaces_;
  }
  /**
   *
   *
   * <pre>
   * List of NICs connected to this VM.
   * </pre>
   *
   * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
   */
  @java.lang.Override
  public java.util.List<? extends com.google.cloud.vmmigration.v1.NetworkInterfaceOrBuilder>
      getNetworkInterfacesOrBuilderList() {
    return networkInterfaces_;
  }
  /**
   *
   *
   * <pre>
   * List of NICs connected to this VM.
   * </pre>
   *
   * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
   */
  @java.lang.Override
  public int getNetworkInterfacesCount() {
    return networkInterfaces_.size();
  }
  /**
   *
   *
   * <pre>
   * List of NICs connected to this VM.
   * </pre>
   *
   * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
   */
  @java.lang.Override
  public com.google.cloud.vmmigration.v1.NetworkInterface getNetworkInterfaces(int index) {
    return networkInterfaces_.get(index);
  }
  /**
   *
   *
   * <pre>
   * List of NICs connected to this VM.
   * </pre>
   *
   * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
   */
  @java.lang.Override
  public com.google.cloud.vmmigration.v1.NetworkInterfaceOrBuilder getNetworkInterfacesOrBuilder(
      int index) {
    return networkInterfaces_.get(index);
  }

  public static final int SERVICE_ACCOUNT_FIELD_NUMBER = 8;

  @SuppressWarnings("serial")
  private volatile java.lang.Object serviceAccount_ = "";
  /**
   *
   *
   * <pre>
   * The service account to associate the VM with.
   * </pre>
   *
   * <code>string service_account = 8;</code>
   *
   * @return The serviceAccount.
   */
  @java.lang.Override
  public java.lang.String getServiceAccount() {
    java.lang.Object ref = serviceAccount_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      serviceAccount_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * The service account to associate the VM with.
   * </pre>
   *
   * <code>string service_account = 8;</code>
   *
   * @return The bytes for serviceAccount.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getServiceAccountBytes() {
    java.lang.Object ref = serviceAccount_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      serviceAccount_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int DISK_TYPE_FIELD_NUMBER = 9;
  private int diskType_ = 0;
  /**
   *
   *
   * <pre>
   * The disk type to use in the VM.
   * </pre>
   *
   * <code>.google.cloud.vmmigration.v1.ComputeEngineDiskType disk_type = 9;</code>
   *
   * @return The enum numeric value on the wire for diskType.
   */
  @java.lang.Override
  public int getDiskTypeValue() {
    return diskType_;
  }
  /**
   *
   *
   * <pre>
   * The disk type to use in the VM.
   * </pre>
   *
   * <code>.google.cloud.vmmigration.v1.ComputeEngineDiskType disk_type = 9;</code>
   *
   * @return The diskType.
   */
  @java.lang.Override
  public com.google.cloud.vmmigration.v1.ComputeEngineDiskType getDiskType() {
    com.google.cloud.vmmigration.v1.ComputeEngineDiskType result =
        com.google.cloud.vmmigration.v1.ComputeEngineDiskType.forNumber(diskType_);
    return result == null
        ? com.google.cloud.vmmigration.v1.ComputeEngineDiskType.UNRECOGNIZED
        : result;
  }

  public static final int LABELS_FIELD_NUMBER = 10;

  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.vmmigration.v1.VmMigrationProto
                .internal_static_google_cloud_vmmigration_v1_ComputeEngineTargetDefaults_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>
   * A map of labels to associate with the VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 10;</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>
   * A map of labels to associate with the VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 10;</code>
   */
  @java.lang.Override
  public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
    return internalGetLabels().getMap();
  }
  /**
   *
   *
   * <pre>
   * A map of labels to associate with the VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 10;</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>
   * A map of labels to associate with the VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 10;</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 static final int LICENSE_TYPE_FIELD_NUMBER = 11;
  private int licenseType_ = 0;
  /**
   *
   *
   * <pre>
   * The license type to use in OS adaptation.
   * </pre>
   *
   * <code>.google.cloud.vmmigration.v1.ComputeEngineLicenseType license_type = 11;</code>
   *
   * @return The enum numeric value on the wire for licenseType.
   */
  @java.lang.Override
  public int getLicenseTypeValue() {
    return licenseType_;
  }
  /**
   *
   *
   * <pre>
   * The license type to use in OS adaptation.
   * </pre>
   *
   * <code>.google.cloud.vmmigration.v1.ComputeEngineLicenseType license_type = 11;</code>
   *
   * @return The licenseType.
   */
  @java.lang.Override
  public com.google.cloud.vmmigration.v1.ComputeEngineLicenseType getLicenseType() {
    com.google.cloud.vmmigration.v1.ComputeEngineLicenseType result =
        com.google.cloud.vmmigration.v1.ComputeEngineLicenseType.forNumber(licenseType_);
    return result == null
        ? com.google.cloud.vmmigration.v1.ComputeEngineLicenseType.UNRECOGNIZED
        : result;
  }

  public static final int APPLIED_LICENSE_FIELD_NUMBER = 12;
  private com.google.cloud.vmmigration.v1.AppliedLicense appliedLicense_;
  /**
   *
   *
   * <pre>
   * Output only. The OS license returned from the adaptation module report.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the appliedLicense field is set.
   */
  @java.lang.Override
  public boolean hasAppliedLicense() {
    return appliedLicense_ != null;
  }
  /**
   *
   *
   * <pre>
   * Output only. The OS license returned from the adaptation module report.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The appliedLicense.
   */
  @java.lang.Override
  public com.google.cloud.vmmigration.v1.AppliedLicense getAppliedLicense() {
    return appliedLicense_ == null
        ? com.google.cloud.vmmigration.v1.AppliedLicense.getDefaultInstance()
        : appliedLicense_;
  }
  /**
   *
   *
   * <pre>
   * Output only. The OS license returned from the adaptation module report.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  @java.lang.Override
  public com.google.cloud.vmmigration.v1.AppliedLicenseOrBuilder getAppliedLicenseOrBuilder() {
    return appliedLicense_ == null
        ? com.google.cloud.vmmigration.v1.AppliedLicense.getDefaultInstance()
        : appliedLicense_;
  }

  public static final int COMPUTE_SCHEDULING_FIELD_NUMBER = 13;
  private com.google.cloud.vmmigration.v1.ComputeScheduling computeScheduling_;
  /**
   *
   *
   * <pre>
   * Compute instance scheduling information (if empty default is used).
   * </pre>
   *
   * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
   *
   * @return Whether the computeScheduling field is set.
   */
  @java.lang.Override
  public boolean hasComputeScheduling() {
    return computeScheduling_ != null;
  }
  /**
   *
   *
   * <pre>
   * Compute instance scheduling information (if empty default is used).
   * </pre>
   *
   * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
   *
   * @return The computeScheduling.
   */
  @java.lang.Override
  public com.google.cloud.vmmigration.v1.ComputeScheduling getComputeScheduling() {
    return computeScheduling_ == null
        ? com.google.cloud.vmmigration.v1.ComputeScheduling.getDefaultInstance()
        : computeScheduling_;
  }
  /**
   *
   *
   * <pre>
   * Compute instance scheduling information (if empty default is used).
   * </pre>
   *
   * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
   */
  @java.lang.Override
  public com.google.cloud.vmmigration.v1.ComputeSchedulingOrBuilder
      getComputeSchedulingOrBuilder() {
    return computeScheduling_ == null
        ? com.google.cloud.vmmigration.v1.ComputeScheduling.getDefaultInstance()
        : computeScheduling_;
  }

  public static final int SECURE_BOOT_FIELD_NUMBER = 14;
  private boolean secureBoot_ = false;
  /**
   *
   *
   * <pre>
   * Defines whether the instance has Secure Boot enabled.
   * This can be set to true only if the vm boot option is EFI.
   * </pre>
   *
   * <code>bool secure_boot = 14;</code>
   *
   * @return The secureBoot.
   */
  @java.lang.Override
  public boolean getSecureBoot() {
    return secureBoot_;
  }

  public static final int BOOT_OPTION_FIELD_NUMBER = 15;
  private int bootOption_ = 0;
  /**
   *
   *
   * <pre>
   * Output only. The VM Boot Option, as set in the source vm.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ComputeEngineBootOption boot_option = 15 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The enum numeric value on the wire for bootOption.
   */
  @java.lang.Override
  public int getBootOptionValue() {
    return bootOption_;
  }
  /**
   *
   *
   * <pre>
   * Output only. The VM Boot Option, as set in the source vm.
   * </pre>
   *
   * <code>
   * .google.cloud.vmmigration.v1.ComputeEngineBootOption boot_option = 15 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The bootOption.
   */
  @java.lang.Override
  public com.google.cloud.vmmigration.v1.ComputeEngineBootOption getBootOption() {
    com.google.cloud.vmmigration.v1.ComputeEngineBootOption result =
        com.google.cloud.vmmigration.v1.ComputeEngineBootOption.forNumber(bootOption_);
    return result == null
        ? com.google.cloud.vmmigration.v1.ComputeEngineBootOption.UNRECOGNIZED
        : result;
  }

  public static final int METADATA_FIELD_NUMBER = 16;

  private static final class MetadataDefaultEntryHolder {
    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.vmmigration.v1.VmMigrationProto
                .internal_static_google_cloud_vmmigration_v1_ComputeEngineTargetDefaults_MetadataEntry_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> metadata_;

  private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetMetadata() {
    if (metadata_ == null) {
      return com.google.protobuf.MapField.emptyMapField(MetadataDefaultEntryHolder.defaultEntry);
    }
    return metadata_;
  }

  public int getMetadataCount() {
    return internalGetMetadata().getMap().size();
  }
  /**
   *
   *
   * <pre>
   * The metadata key/value pairs to assign to the VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; metadata = 16;</code>
   */
  @java.lang.Override
  public boolean containsMetadata(java.lang.String key) {
    if (key == null) {
      throw new NullPointerException("map key");
    }
    return internalGetMetadata().getMap().containsKey(key);
  }
  /** Use {@link #getMetadataMap()} instead. */
  @java.lang.Override
  @java.lang.Deprecated
  public java.util.Map<java.lang.String, java.lang.String> getMetadata() {
    return getMetadataMap();
  }
  /**
   *
   *
   * <pre>
   * The metadata key/value pairs to assign to the VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; metadata = 16;</code>
   */
  @java.lang.Override
  public java.util.Map<java.lang.String, java.lang.String> getMetadataMap() {
    return internalGetMetadata().getMap();
  }
  /**
   *
   *
   * <pre>
   * The metadata key/value pairs to assign to the VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; metadata = 16;</code>
   */
  @java.lang.Override
  public /* nullable */ java.lang.String getMetadataOrDefault(
      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 = internalGetMetadata().getMap();
    return map.containsKey(key) ? map.get(key) : defaultValue;
  }
  /**
   *
   *
   * <pre>
   * The metadata key/value pairs to assign to the VM.
   * </pre>
   *
   * <code>map&lt;string, string&gt; metadata = 16;</code>
   */
  @java.lang.Override
  public java.lang.String getMetadataOrThrow(java.lang.String key) {
    if (key == null) {
      throw new NullPointerException("map key");
    }
    java.util.Map<java.lang.String, java.lang.String> map = internalGetMetadata().getMap();
    if (!map.containsKey(key)) {
      throw new java.lang.IllegalArgumentException();
    }
    return map.get(key);
  }

  public static final int ADDITIONAL_LICENSES_FIELD_NUMBER = 17;

  @SuppressWarnings("serial")
  private com.google.protobuf.LazyStringList additionalLicenses_;
  /**
   *
   *
   * <pre>
   * Additional licenses to assign to the VM.
   * </pre>
   *
   * <code>repeated string additional_licenses = 17;</code>
   *
   * @return A list containing the additionalLicenses.
   */
  public com.google.protobuf.ProtocolStringList getAdditionalLicensesList() {
    return additionalLicenses_;
  }
  /**
   *
   *
   * <pre>
   * Additional licenses to assign to the VM.
   * </pre>
   *
   * <code>repeated string additional_licenses = 17;</code>
   *
   * @return The count of additionalLicenses.
   */
  public int getAdditionalLicensesCount() {
    return additionalLicenses_.size();
  }
  /**
   *
   *
   * <pre>
   * Additional licenses to assign to the VM.
   * </pre>
   *
   * <code>repeated string additional_licenses = 17;</code>
   *
   * @param index The index of the element to return.
   * @return The additionalLicenses at the given index.
   */
  public java.lang.String getAdditionalLicenses(int index) {
    return additionalLicenses_.get(index);
  }
  /**
   *
   *
   * <pre>
   * Additional licenses to assign to the VM.
   * </pre>
   *
   * <code>repeated string additional_licenses = 17;</code>
   *
   * @param index The index of the value to return.
   * @return The bytes of the additionalLicenses at the given index.
   */
  public com.google.protobuf.ByteString getAdditionalLicensesBytes(int index) {
    return additionalLicenses_.getByteString(index);
  }

  public static final int HOSTNAME_FIELD_NUMBER = 18;

  @SuppressWarnings("serial")
  private volatile java.lang.Object hostname_ = "";
  /**
   *
   *
   * <pre>
   * The hostname to assign to the VM.
   * </pre>
   *
   * <code>string hostname = 18;</code>
   *
   * @return The hostname.
   */
  @java.lang.Override
  public java.lang.String getHostname() {
    java.lang.Object ref = hostname_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      hostname_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * The hostname to assign to the VM.
   * </pre>
   *
   * <code>string hostname = 18;</code>
   *
   * @return The bytes for hostname.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getHostnameBytes() {
    java.lang.Object ref = hostname_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      hostname_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  private byte memoizedIsInitialized = -1;

  @java.lang.Override
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    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(vmName_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, vmName_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(targetProject_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 2, targetProject_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(zone_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 3, zone_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(machineTypeSeries_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 4, machineTypeSeries_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(machineType_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 5, machineType_);
    }
    for (int i = 0; i < networkTags_.size(); i++) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 6, networkTags_.getRaw(i));
    }
    for (int i = 0; i < networkInterfaces_.size(); i++) {
      output.writeMessage(7, networkInterfaces_.get(i));
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceAccount_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 8, serviceAccount_);
    }
    if (diskType_
        != com.google.cloud.vmmigration.v1.ComputeEngineDiskType
            .COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED
            .getNumber()) {
      output.writeEnum(9, diskType_);
    }
    com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
        output, internalGetLabels(), LabelsDefaultEntryHolder.defaultEntry, 10);
    if (licenseType_
        != com.google.cloud.vmmigration.v1.ComputeEngineLicenseType
            .COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT
            .getNumber()) {
      output.writeEnum(11, licenseType_);
    }
    if (appliedLicense_ != null) {
      output.writeMessage(12, getAppliedLicense());
    }
    if (computeScheduling_ != null) {
      output.writeMessage(13, getComputeScheduling());
    }
    if (secureBoot_ != false) {
      output.writeBool(14, secureBoot_);
    }
    if (bootOption_
        != com.google.cloud.vmmigration.v1.ComputeEngineBootOption
            .COMPUTE_ENGINE_BOOT_OPTION_UNSPECIFIED
            .getNumber()) {
      output.writeEnum(15, bootOption_);
    }
    com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
        output, internalGetMetadata(), MetadataDefaultEntryHolder.defaultEntry, 16);
    for (int i = 0; i < additionalLicenses_.size(); i++) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 17, additionalLicenses_.getRaw(i));
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hostname_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 18, hostname_);
    }
    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(vmName_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, vmName_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(targetProject_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, targetProject_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(zone_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, zone_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(machineTypeSeries_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, machineTypeSeries_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(machineType_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, machineType_);
    }
    {
      int dataSize = 0;
      for (int i = 0; i < networkTags_.size(); i++) {
        dataSize += computeStringSizeNoTag(networkTags_.getRaw(i));
      }
      size += dataSize;
      size += 1 * getNetworkTagsList().size();
    }
    for (int i = 0; i < networkInterfaces_.size(); i++) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(7, networkInterfaces_.get(i));
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceAccount_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, serviceAccount_);
    }
    if (diskType_
        != com.google.cloud.vmmigration.v1.ComputeEngineDiskType
            .COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED
            .getNumber()) {
      size += com.google.protobuf.CodedOutputStream.computeEnumSize(9, diskType_);
    }
    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(10, labels__);
    }
    if (licenseType_
        != com.google.cloud.vmmigration.v1.ComputeEngineLicenseType
            .COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT
            .getNumber()) {
      size += com.google.protobuf.CodedOutputStream.computeEnumSize(11, licenseType_);
    }
    if (appliedLicense_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(12, getAppliedLicense());
    }
    if (computeScheduling_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(13, getComputeScheduling());
    }
    if (secureBoot_ != false) {
      size += com.google.protobuf.CodedOutputStream.computeBoolSize(14, secureBoot_);
    }
    if (bootOption_
        != com.google.cloud.vmmigration.v1.ComputeEngineBootOption
            .COMPUTE_ENGINE_BOOT_OPTION_UNSPECIFIED
            .getNumber()) {
      size += com.google.protobuf.CodedOutputStream.computeEnumSize(15, bootOption_);
    }
    for (java.util.Map.Entry<java.lang.String, java.lang.String> entry :
        internalGetMetadata().getMap().entrySet()) {
      com.google.protobuf.MapEntry<java.lang.String, java.lang.String> metadata__ =
          MetadataDefaultEntryHolder.defaultEntry
              .newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(16, metadata__);
    }
    {
      int dataSize = 0;
      for (int i = 0; i < additionalLicenses_.size(); i++) {
        dataSize += computeStringSizeNoTag(additionalLicenses_.getRaw(i));
      }
      size += dataSize;
      size += 2 * getAdditionalLicensesList().size();
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hostname_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(18, hostname_);
    }
    size += getUnknownFields().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.vmmigration.v1.ComputeEngineTargetDefaults)) {
      return super.equals(obj);
    }
    com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults other =
        (com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults) obj;

    if (!getVmName().equals(other.getVmName())) return false;
    if (!getTargetProject().equals(other.getTargetProject())) return false;
    if (!getZone().equals(other.getZone())) return false;
    if (!getMachineTypeSeries().equals(other.getMachineTypeSeries())) return false;
    if (!getMachineType().equals(other.getMachineType())) return false;
    if (!getNetworkTagsList().equals(other.getNetworkTagsList())) return false;
    if (!getNetworkInterfacesList().equals(other.getNetworkInterfacesList())) return false;
    if (!getServiceAccount().equals(other.getServiceAccount())) return false;
    if (diskType_ != other.diskType_) return false;
    if (!internalGetLabels().equals(other.internalGetLabels())) return false;
    if (licenseType_ != other.licenseType_) return false;
    if (hasAppliedLicense() != other.hasAppliedLicense()) return false;
    if (hasAppliedLicense()) {
      if (!getAppliedLicense().equals(other.getAppliedLicense())) return false;
    }
    if (hasComputeScheduling() != other.hasComputeScheduling()) return false;
    if (hasComputeScheduling()) {
      if (!getComputeScheduling().equals(other.getComputeScheduling())) return false;
    }
    if (getSecureBoot() != other.getSecureBoot()) return false;
    if (bootOption_ != other.bootOption_) return false;
    if (!internalGetMetadata().equals(other.internalGetMetadata())) return false;
    if (!getAdditionalLicensesList().equals(other.getAdditionalLicensesList())) return false;
    if (!getHostname().equals(other.getHostname())) return false;
    if (!getUnknownFields().equals(other.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) + VM_NAME_FIELD_NUMBER;
    hash = (53 * hash) + getVmName().hashCode();
    hash = (37 * hash) + TARGET_PROJECT_FIELD_NUMBER;
    hash = (53 * hash) + getTargetProject().hashCode();
    hash = (37 * hash) + ZONE_FIELD_NUMBER;
    hash = (53 * hash) + getZone().hashCode();
    hash = (37 * hash) + MACHINE_TYPE_SERIES_FIELD_NUMBER;
    hash = (53 * hash) + getMachineTypeSeries().hashCode();
    hash = (37 * hash) + MACHINE_TYPE_FIELD_NUMBER;
    hash = (53 * hash) + getMachineType().hashCode();
    if (getNetworkTagsCount() > 0) {
      hash = (37 * hash) + NETWORK_TAGS_FIELD_NUMBER;
      hash = (53 * hash) + getNetworkTagsList().hashCode();
    }
    if (getNetworkInterfacesCount() > 0) {
      hash = (37 * hash) + NETWORK_INTERFACES_FIELD_NUMBER;
      hash = (53 * hash) + getNetworkInterfacesList().hashCode();
    }
    hash = (37 * hash) + SERVICE_ACCOUNT_FIELD_NUMBER;
    hash = (53 * hash) + getServiceAccount().hashCode();
    hash = (37 * hash) + DISK_TYPE_FIELD_NUMBER;
    hash = (53 * hash) + diskType_;
    if (!internalGetLabels().getMap().isEmpty()) {
      hash = (37 * hash) + LABELS_FIELD_NUMBER;
      hash = (53 * hash) + internalGetLabels().hashCode();
    }
    hash = (37 * hash) + LICENSE_TYPE_FIELD_NUMBER;
    hash = (53 * hash) + licenseType_;
    if (hasAppliedLicense()) {
      hash = (37 * hash) + APPLIED_LICENSE_FIELD_NUMBER;
      hash = (53 * hash) + getAppliedLicense().hashCode();
    }
    if (hasComputeScheduling()) {
      hash = (37 * hash) + COMPUTE_SCHEDULING_FIELD_NUMBER;
      hash = (53 * hash) + getComputeScheduling().hashCode();
    }
    hash = (37 * hash) + SECURE_BOOT_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getSecureBoot());
    hash = (37 * hash) + BOOT_OPTION_FIELD_NUMBER;
    hash = (53 * hash) + bootOption_;
    if (!internalGetMetadata().getMap().isEmpty()) {
      hash = (37 * hash) + METADATA_FIELD_NUMBER;
      hash = (53 * hash) + internalGetMetadata().hashCode();
    }
    if (getAdditionalLicensesCount() > 0) {
      hash = (37 * hash) + ADDITIONAL_LICENSES_FIELD_NUMBER;
      hash = (53 * hash) + getAdditionalLicensesList().hashCode();
    }
    hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
    hash = (53 * hash) + getHostname().hashCode();
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults parseFrom(
      java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults 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.vmmigration.v1.ComputeEngineTargetDefaults parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults 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.vmmigration.v1.ComputeEngineTargetDefaults parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults parseFrom(
      byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults parseFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults 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.vmmigration.v1.ComputeEngineTargetDefaults parseDelimitedFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
  }

  public static com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults 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.vmmigration.v1.ComputeEngineTargetDefaults parseFrom(
      com.google.protobuf.CodedInputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults 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.vmmigration.v1.ComputeEngineTargetDefaults prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }

  @java.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>
   * ComputeEngineTargetDefaults is a collection of details for creating a VM in a
   * target Compute Engine project.
   * </pre>
   *
   * Protobuf type {@code google.cloud.vmmigration.v1.ComputeEngineTargetDefaults}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
      implements
      // @@protoc_insertion_point(builder_implements:google.cloud.vmmigration.v1.ComputeEngineTargetDefaults)
      com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaultsOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.vmmigration.v1.VmMigrationProto
          .internal_static_google_cloud_vmmigration_v1_ComputeEngineTargetDefaults_descriptor;
    }

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

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

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.vmmigration.v1.VmMigrationProto
          .internal_static_google_cloud_vmmigration_v1_ComputeEngineTargetDefaults_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults.class,
              com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults.Builder.class);
    }

    // Construct using com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults.newBuilder()
    private Builder() {}

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

    @java.lang.Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      vmName_ = "";
      targetProject_ = "";
      zone_ = "";
      machineTypeSeries_ = "";
      machineType_ = "";
      networkTags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      bitField0_ = (bitField0_ & ~0x00000020);
      if (networkInterfacesBuilder_ == null) {
        networkInterfaces_ = java.util.Collections.emptyList();
      } else {
        networkInterfaces_ = null;
        networkInterfacesBuilder_.clear();
      }
      bitField0_ = (bitField0_ & ~0x00000040);
      serviceAccount_ = "";
      diskType_ = 0;
      internalGetMutableLabels().clear();
      licenseType_ = 0;
      appliedLicense_ = null;
      if (appliedLicenseBuilder_ != null) {
        appliedLicenseBuilder_.dispose();
        appliedLicenseBuilder_ = null;
      }
      computeScheduling_ = null;
      if (computeSchedulingBuilder_ != null) {
        computeSchedulingBuilder_.dispose();
        computeSchedulingBuilder_ = null;
      }
      secureBoot_ = false;
      bootOption_ = 0;
      internalGetMutableMetadata().clear();
      additionalLicenses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      bitField0_ = (bitField0_ & ~0x00010000);
      hostname_ = "";
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return com.google.cloud.vmmigration.v1.VmMigrationProto
          .internal_static_google_cloud_vmmigration_v1_ComputeEngineTargetDefaults_descriptor;
    }

    @java.lang.Override
    public com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults getDefaultInstanceForType() {
      return com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults.getDefaultInstance();
    }

    @java.lang.Override
    public com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults build() {
      com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults buildPartial() {
      com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults result =
          new com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults(this);
      buildPartialRepeatedFields(result);
      if (bitField0_ != 0) {
        buildPartial0(result);
      }
      onBuilt();
      return result;
    }

    private void buildPartialRepeatedFields(
        com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults result) {
      if (((bitField0_ & 0x00000020) != 0)) {
        networkTags_ = networkTags_.getUnmodifiableView();
        bitField0_ = (bitField0_ & ~0x00000020);
      }
      result.networkTags_ = networkTags_;
      if (networkInterfacesBuilder_ == null) {
        if (((bitField0_ & 0x00000040) != 0)) {
          networkInterfaces_ = java.util.Collections.unmodifiableList(networkInterfaces_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.networkInterfaces_ = networkInterfaces_;
      } else {
        result.networkInterfaces_ = networkInterfacesBuilder_.build();
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        additionalLicenses_ = additionalLicenses_.getUnmodifiableView();
        bitField0_ = (bitField0_ & ~0x00010000);
      }
      result.additionalLicenses_ = additionalLicenses_;
    }

    private void buildPartial0(com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults result) {
      int from_bitField0_ = bitField0_;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.vmName_ = vmName_;
      }
      if (((from_bitField0_ & 0x00000002) != 0)) {
        result.targetProject_ = targetProject_;
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.zone_ = zone_;
      }
      if (((from_bitField0_ & 0x00000008) != 0)) {
        result.machineTypeSeries_ = machineTypeSeries_;
      }
      if (((from_bitField0_ & 0x00000010) != 0)) {
        result.machineType_ = machineType_;
      }
      if (((from_bitField0_ & 0x00000080) != 0)) {
        result.serviceAccount_ = serviceAccount_;
      }
      if (((from_bitField0_ & 0x00000100) != 0)) {
        result.diskType_ = diskType_;
      }
      if (((from_bitField0_ & 0x00000200) != 0)) {
        result.labels_ = internalGetLabels();
        result.labels_.makeImmutable();
      }
      if (((from_bitField0_ & 0x00000400) != 0)) {
        result.licenseType_ = licenseType_;
      }
      if (((from_bitField0_ & 0x00000800) != 0)) {
        result.appliedLicense_ =
            appliedLicenseBuilder_ == null ? appliedLicense_ : appliedLicenseBuilder_.build();
      }
      if (((from_bitField0_ & 0x00001000) != 0)) {
        result.computeScheduling_ =
            computeSchedulingBuilder_ == null
                ? computeScheduling_
                : computeSchedulingBuilder_.build();
      }
      if (((from_bitField0_ & 0x00002000) != 0)) {
        result.secureBoot_ = secureBoot_;
      }
      if (((from_bitField0_ & 0x00004000) != 0)) {
        result.bootOption_ = bootOption_;
      }
      if (((from_bitField0_ & 0x00008000) != 0)) {
        result.metadata_ = internalGetMetadata();
        result.metadata_.makeImmutable();
      }
      if (((from_bitField0_ & 0x00020000) != 0)) {
        result.hostname_ = hostname_;
      }
    }

    @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.vmmigration.v1.ComputeEngineTargetDefaults) {
        return mergeFrom((com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults other) {
      if (other == com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults.getDefaultInstance())
        return this;
      if (!other.getVmName().isEmpty()) {
        vmName_ = other.vmName_;
        bitField0_ |= 0x00000001;
        onChanged();
      }
      if (!other.getTargetProject().isEmpty()) {
        targetProject_ = other.targetProject_;
        bitField0_ |= 0x00000002;
        onChanged();
      }
      if (!other.getZone().isEmpty()) {
        zone_ = other.zone_;
        bitField0_ |= 0x00000004;
        onChanged();
      }
      if (!other.getMachineTypeSeries().isEmpty()) {
        machineTypeSeries_ = other.machineTypeSeries_;
        bitField0_ |= 0x00000008;
        onChanged();
      }
      if (!other.getMachineType().isEmpty()) {
        machineType_ = other.machineType_;
        bitField0_ |= 0x00000010;
        onChanged();
      }
      if (!other.networkTags_.isEmpty()) {
        if (networkTags_.isEmpty()) {
          networkTags_ = other.networkTags_;
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          ensureNetworkTagsIsMutable();
          networkTags_.addAll(other.networkTags_);
        }
        onChanged();
      }
      if (networkInterfacesBuilder_ == null) {
        if (!other.networkInterfaces_.isEmpty()) {
          if (networkInterfaces_.isEmpty()) {
            networkInterfaces_ = other.networkInterfaces_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureNetworkInterfacesIsMutable();
            networkInterfaces_.addAll(other.networkInterfaces_);
          }
          onChanged();
        }
      } else {
        if (!other.networkInterfaces_.isEmpty()) {
          if (networkInterfacesBuilder_.isEmpty()) {
            networkInterfacesBuilder_.dispose();
            networkInterfacesBuilder_ = null;
            networkInterfaces_ = other.networkInterfaces_;
            bitField0_ = (bitField0_ & ~0x00000040);
            networkInterfacesBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                    ? getNetworkInterfacesFieldBuilder()
                    : null;
          } else {
            networkInterfacesBuilder_.addAllMessages(other.networkInterfaces_);
          }
        }
      }
      if (!other.getServiceAccount().isEmpty()) {
        serviceAccount_ = other.serviceAccount_;
        bitField0_ |= 0x00000080;
        onChanged();
      }
      if (other.diskType_ != 0) {
        setDiskTypeValue(other.getDiskTypeValue());
      }
      internalGetMutableLabels().mergeFrom(other.internalGetLabels());
      bitField0_ |= 0x00000200;
      if (other.licenseType_ != 0) {
        setLicenseTypeValue(other.getLicenseTypeValue());
      }
      if (other.hasAppliedLicense()) {
        mergeAppliedLicense(other.getAppliedLicense());
      }
      if (other.hasComputeScheduling()) {
        mergeComputeScheduling(other.getComputeScheduling());
      }
      if (other.getSecureBoot() != false) {
        setSecureBoot(other.getSecureBoot());
      }
      if (other.bootOption_ != 0) {
        setBootOptionValue(other.getBootOptionValue());
      }
      internalGetMutableMetadata().mergeFrom(other.internalGetMetadata());
      bitField0_ |= 0x00008000;
      if (!other.additionalLicenses_.isEmpty()) {
        if (additionalLicenses_.isEmpty()) {
          additionalLicenses_ = other.additionalLicenses_;
          bitField0_ = (bitField0_ & ~0x00010000);
        } else {
          ensureAdditionalLicensesIsMutable();
          additionalLicenses_.addAll(other.additionalLicenses_);
        }
        onChanged();
      }
      if (!other.getHostname().isEmpty()) {
        hostname_ = other.hostname_;
        bitField0_ |= 0x00020000;
        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:
              {
                vmName_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
            case 18:
              {
                targetProject_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
            case 26:
              {
                zone_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
            case 34:
              {
                machineTypeSeries_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
            case 42:
              {
                machineType_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
            case 50:
              {
                java.lang.String s = input.readStringRequireUtf8();
                ensureNetworkTagsIsMutable();
                networkTags_.add(s);
                break;
              } // case 50
            case 58:
              {
                com.google.cloud.vmmigration.v1.NetworkInterface m =
                    input.readMessage(
                        com.google.cloud.vmmigration.v1.NetworkInterface.parser(),
                        extensionRegistry);
                if (networkInterfacesBuilder_ == null) {
                  ensureNetworkInterfacesIsMutable();
                  networkInterfaces_.add(m);
                } else {
                  networkInterfacesBuilder_.addMessage(m);
                }
                break;
              } // case 58
            case 66:
              {
                serviceAccount_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
            case 72:
              {
                diskType_ = input.readEnum();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
            case 82:
              {
                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_ |= 0x00000200;
                break;
              } // case 82
            case 88:
              {
                licenseType_ = input.readEnum();
                bitField0_ |= 0x00000400;
                break;
              } // case 88
            case 98:
              {
                input.readMessage(getAppliedLicenseFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 98
            case 106:
              {
                input.readMessage(
                    getComputeSchedulingFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00001000;
                break;
              } // case 106
            case 112:
              {
                secureBoot_ = input.readBool();
                bitField0_ |= 0x00002000;
                break;
              } // case 112
            case 120:
              {
                bootOption_ = input.readEnum();
                bitField0_ |= 0x00004000;
                break;
              } // case 120
            case 130:
              {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String> metadata__ =
                    input.readMessage(
                        MetadataDefaultEntryHolder.defaultEntry.getParserForType(),
                        extensionRegistry);
                internalGetMutableMetadata()
                    .getMutableMap()
                    .put(metadata__.getKey(), metadata__.getValue());
                bitField0_ |= 0x00008000;
                break;
              } // case 130
            case 138:
              {
                java.lang.String s = input.readStringRequireUtf8();
                ensureAdditionalLicensesIsMutable();
                additionalLicenses_.add(s);
                break;
              } // case 138
            case 146:
              {
                hostname_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00020000;
                break;
              } // case 146
            default:
              {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                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 vmName_ = "";
    /**
     *
     *
     * <pre>
     * The name of the VM to create.
     * </pre>
     *
     * <code>string vm_name = 1;</code>
     *
     * @return The vmName.
     */
    public java.lang.String getVmName() {
      java.lang.Object ref = vmName_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        vmName_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The name of the VM to create.
     * </pre>
     *
     * <code>string vm_name = 1;</code>
     *
     * @return The bytes for vmName.
     */
    public com.google.protobuf.ByteString getVmNameBytes() {
      java.lang.Object ref = vmName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        vmName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The name of the VM to create.
     * </pre>
     *
     * <code>string vm_name = 1;</code>
     *
     * @param value The vmName to set.
     * @return This builder for chaining.
     */
    public Builder setVmName(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      vmName_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The name of the VM to create.
     * </pre>
     *
     * <code>string vm_name = 1;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearVmName() {
      vmName_ = getDefaultInstance().getVmName();
      bitField0_ = (bitField0_ & ~0x00000001);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The name of the VM to create.
     * </pre>
     *
     * <code>string vm_name = 1;</code>
     *
     * @param value The bytes for vmName to set.
     * @return This builder for chaining.
     */
    public Builder setVmNameBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      vmName_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }

    private java.lang.Object targetProject_ = "";
    /**
     *
     *
     * <pre>
     * The full path of the resource of type TargetProject which represents the
     * Compute Engine project in which to create this VM.
     * </pre>
     *
     * <code>string target_project = 2 [(.google.api.resource_reference) = { ... }</code>
     *
     * @return The targetProject.
     */
    public java.lang.String getTargetProject() {
      java.lang.Object ref = targetProject_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        targetProject_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The full path of the resource of type TargetProject which represents the
     * Compute Engine project in which to create this VM.
     * </pre>
     *
     * <code>string target_project = 2 [(.google.api.resource_reference) = { ... }</code>
     *
     * @return The bytes for targetProject.
     */
    public com.google.protobuf.ByteString getTargetProjectBytes() {
      java.lang.Object ref = targetProject_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        targetProject_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The full path of the resource of type TargetProject which represents the
     * Compute Engine project in which to create this VM.
     * </pre>
     *
     * <code>string target_project = 2 [(.google.api.resource_reference) = { ... }</code>
     *
     * @param value The targetProject to set.
     * @return This builder for chaining.
     */
    public Builder setTargetProject(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      targetProject_ = value;
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The full path of the resource of type TargetProject which represents the
     * Compute Engine project in which to create this VM.
     * </pre>
     *
     * <code>string target_project = 2 [(.google.api.resource_reference) = { ... }</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearTargetProject() {
      targetProject_ = getDefaultInstance().getTargetProject();
      bitField0_ = (bitField0_ & ~0x00000002);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The full path of the resource of type TargetProject which represents the
     * Compute Engine project in which to create this VM.
     * </pre>
     *
     * <code>string target_project = 2 [(.google.api.resource_reference) = { ... }</code>
     *
     * @param value The bytes for targetProject to set.
     * @return This builder for chaining.
     */
    public Builder setTargetProjectBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      targetProject_ = value;
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }

    private java.lang.Object zone_ = "";
    /**
     *
     *
     * <pre>
     * The zone in which to create the VM.
     * </pre>
     *
     * <code>string zone = 3;</code>
     *
     * @return The zone.
     */
    public java.lang.String getZone() {
      java.lang.Object ref = zone_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        zone_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The zone in which to create the VM.
     * </pre>
     *
     * <code>string zone = 3;</code>
     *
     * @return The bytes for zone.
     */
    public com.google.protobuf.ByteString getZoneBytes() {
      java.lang.Object ref = zone_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        zone_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The zone in which to create the VM.
     * </pre>
     *
     * <code>string zone = 3;</code>
     *
     * @param value The zone to set.
     * @return This builder for chaining.
     */
    public Builder setZone(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      zone_ = value;
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The zone in which to create the VM.
     * </pre>
     *
     * <code>string zone = 3;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearZone() {
      zone_ = getDefaultInstance().getZone();
      bitField0_ = (bitField0_ & ~0x00000004);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The zone in which to create the VM.
     * </pre>
     *
     * <code>string zone = 3;</code>
     *
     * @param value The bytes for zone to set.
     * @return This builder for chaining.
     */
    public Builder setZoneBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      zone_ = value;
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }

    private java.lang.Object machineTypeSeries_ = "";
    /**
     *
     *
     * <pre>
     * The machine type series to create the VM with.
     * </pre>
     *
     * <code>string machine_type_series = 4;</code>
     *
     * @return The machineTypeSeries.
     */
    public java.lang.String getMachineTypeSeries() {
      java.lang.Object ref = machineTypeSeries_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        machineTypeSeries_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The machine type series to create the VM with.
     * </pre>
     *
     * <code>string machine_type_series = 4;</code>
     *
     * @return The bytes for machineTypeSeries.
     */
    public com.google.protobuf.ByteString getMachineTypeSeriesBytes() {
      java.lang.Object ref = machineTypeSeries_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        machineTypeSeries_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The machine type series to create the VM with.
     * </pre>
     *
     * <code>string machine_type_series = 4;</code>
     *
     * @param value The machineTypeSeries to set.
     * @return This builder for chaining.
     */
    public Builder setMachineTypeSeries(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      machineTypeSeries_ = value;
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The machine type series to create the VM with.
     * </pre>
     *
     * <code>string machine_type_series = 4;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearMachineTypeSeries() {
      machineTypeSeries_ = getDefaultInstance().getMachineTypeSeries();
      bitField0_ = (bitField0_ & ~0x00000008);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The machine type series to create the VM with.
     * </pre>
     *
     * <code>string machine_type_series = 4;</code>
     *
     * @param value The bytes for machineTypeSeries to set.
     * @return This builder for chaining.
     */
    public Builder setMachineTypeSeriesBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      machineTypeSeries_ = value;
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }

    private java.lang.Object machineType_ = "";
    /**
     *
     *
     * <pre>
     * The machine type to create the VM with.
     * </pre>
     *
     * <code>string machine_type = 5;</code>
     *
     * @return The machineType.
     */
    public java.lang.String getMachineType() {
      java.lang.Object ref = machineType_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        machineType_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The machine type to create the VM with.
     * </pre>
     *
     * <code>string machine_type = 5;</code>
     *
     * @return The bytes for machineType.
     */
    public com.google.protobuf.ByteString getMachineTypeBytes() {
      java.lang.Object ref = machineType_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        machineType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The machine type to create the VM with.
     * </pre>
     *
     * <code>string machine_type = 5;</code>
     *
     * @param value The machineType to set.
     * @return This builder for chaining.
     */
    public Builder setMachineType(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      machineType_ = value;
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The machine type to create the VM with.
     * </pre>
     *
     * <code>string machine_type = 5;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearMachineType() {
      machineType_ = getDefaultInstance().getMachineType();
      bitField0_ = (bitField0_ & ~0x00000010);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The machine type to create the VM with.
     * </pre>
     *
     * <code>string machine_type = 5;</code>
     *
     * @param value The bytes for machineType to set.
     * @return This builder for chaining.
     */
    public Builder setMachineTypeBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      machineType_ = value;
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }

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

    private void ensureNetworkTagsIsMutable() {
      if (!((bitField0_ & 0x00000020) != 0)) {
        networkTags_ = new com.google.protobuf.LazyStringArrayList(networkTags_);
        bitField0_ |= 0x00000020;
      }
    }
    /**
     *
     *
     * <pre>
     * A map of network tags to associate with the VM.
     * </pre>
     *
     * <code>repeated string network_tags = 6;</code>
     *
     * @return A list containing the networkTags.
     */
    public com.google.protobuf.ProtocolStringList getNetworkTagsList() {
      return networkTags_.getUnmodifiableView();
    }
    /**
     *
     *
     * <pre>
     * A map of network tags to associate with the VM.
     * </pre>
     *
     * <code>repeated string network_tags = 6;</code>
     *
     * @return The count of networkTags.
     */
    public int getNetworkTagsCount() {
      return networkTags_.size();
    }
    /**
     *
     *
     * <pre>
     * A map of network tags to associate with the VM.
     * </pre>
     *
     * <code>repeated string network_tags = 6;</code>
     *
     * @param index The index of the element to return.
     * @return The networkTags at the given index.
     */
    public java.lang.String getNetworkTags(int index) {
      return networkTags_.get(index);
    }
    /**
     *
     *
     * <pre>
     * A map of network tags to associate with the VM.
     * </pre>
     *
     * <code>repeated string network_tags = 6;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the networkTags at the given index.
     */
    public com.google.protobuf.ByteString getNetworkTagsBytes(int index) {
      return networkTags_.getByteString(index);
    }
    /**
     *
     *
     * <pre>
     * A map of network tags to associate with the VM.
     * </pre>
     *
     * <code>repeated string network_tags = 6;</code>
     *
     * @param index The index to set the value at.
     * @param value The networkTags to set.
     * @return This builder for chaining.
     */
    public Builder setNetworkTags(int index, java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureNetworkTagsIsMutable();
      networkTags_.set(index, value);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * A map of network tags to associate with the VM.
     * </pre>
     *
     * <code>repeated string network_tags = 6;</code>
     *
     * @param value The networkTags to add.
     * @return This builder for chaining.
     */
    public Builder addNetworkTags(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureNetworkTagsIsMutable();
      networkTags_.add(value);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * A map of network tags to associate with the VM.
     * </pre>
     *
     * <code>repeated string network_tags = 6;</code>
     *
     * @param values The networkTags to add.
     * @return This builder for chaining.
     */
    public Builder addAllNetworkTags(java.lang.Iterable<java.lang.String> values) {
      ensureNetworkTagsIsMutable();
      com.google.protobuf.AbstractMessageLite.Builder.addAll(values, networkTags_);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * A map of network tags to associate with the VM.
     * </pre>
     *
     * <code>repeated string network_tags = 6;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearNetworkTags() {
      networkTags_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      bitField0_ = (bitField0_ & ~0x00000020);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * A map of network tags to associate with the VM.
     * </pre>
     *
     * <code>repeated string network_tags = 6;</code>
     *
     * @param value The bytes of the networkTags to add.
     * @return This builder for chaining.
     */
    public Builder addNetworkTagsBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      ensureNetworkTagsIsMutable();
      networkTags_.add(value);
      onChanged();
      return this;
    }

    private java.util.List<com.google.cloud.vmmigration.v1.NetworkInterface> networkInterfaces_ =
        java.util.Collections.emptyList();

    private void ensureNetworkInterfacesIsMutable() {
      if (!((bitField0_ & 0x00000040) != 0)) {
        networkInterfaces_ =
            new java.util.ArrayList<com.google.cloud.vmmigration.v1.NetworkInterface>(
                networkInterfaces_);
        bitField0_ |= 0x00000040;
      }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.cloud.vmmigration.v1.NetworkInterface,
            com.google.cloud.vmmigration.v1.NetworkInterface.Builder,
            com.google.cloud.vmmigration.v1.NetworkInterfaceOrBuilder>
        networkInterfacesBuilder_;

    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public java.util.List<com.google.cloud.vmmigration.v1.NetworkInterface>
        getNetworkInterfacesList() {
      if (networkInterfacesBuilder_ == null) {
        return java.util.Collections.unmodifiableList(networkInterfaces_);
      } else {
        return networkInterfacesBuilder_.getMessageList();
      }
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public int getNetworkInterfacesCount() {
      if (networkInterfacesBuilder_ == null) {
        return networkInterfaces_.size();
      } else {
        return networkInterfacesBuilder_.getCount();
      }
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public com.google.cloud.vmmigration.v1.NetworkInterface getNetworkInterfaces(int index) {
      if (networkInterfacesBuilder_ == null) {
        return networkInterfaces_.get(index);
      } else {
        return networkInterfacesBuilder_.getMessage(index);
      }
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public Builder setNetworkInterfaces(
        int index, com.google.cloud.vmmigration.v1.NetworkInterface value) {
      if (networkInterfacesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureNetworkInterfacesIsMutable();
        networkInterfaces_.set(index, value);
        onChanged();
      } else {
        networkInterfacesBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public Builder setNetworkInterfaces(
        int index, com.google.cloud.vmmigration.v1.NetworkInterface.Builder builderForValue) {
      if (networkInterfacesBuilder_ == null) {
        ensureNetworkInterfacesIsMutable();
        networkInterfaces_.set(index, builderForValue.build());
        onChanged();
      } else {
        networkInterfacesBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public Builder addNetworkInterfaces(com.google.cloud.vmmigration.v1.NetworkInterface value) {
      if (networkInterfacesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureNetworkInterfacesIsMutable();
        networkInterfaces_.add(value);
        onChanged();
      } else {
        networkInterfacesBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public Builder addNetworkInterfaces(
        int index, com.google.cloud.vmmigration.v1.NetworkInterface value) {
      if (networkInterfacesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureNetworkInterfacesIsMutable();
        networkInterfaces_.add(index, value);
        onChanged();
      } else {
        networkInterfacesBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public Builder addNetworkInterfaces(
        com.google.cloud.vmmigration.v1.NetworkInterface.Builder builderForValue) {
      if (networkInterfacesBuilder_ == null) {
        ensureNetworkInterfacesIsMutable();
        networkInterfaces_.add(builderForValue.build());
        onChanged();
      } else {
        networkInterfacesBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public Builder addNetworkInterfaces(
        int index, com.google.cloud.vmmigration.v1.NetworkInterface.Builder builderForValue) {
      if (networkInterfacesBuilder_ == null) {
        ensureNetworkInterfacesIsMutable();
        networkInterfaces_.add(index, builderForValue.build());
        onChanged();
      } else {
        networkInterfacesBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public Builder addAllNetworkInterfaces(
        java.lang.Iterable<? extends com.google.cloud.vmmigration.v1.NetworkInterface> values) {
      if (networkInterfacesBuilder_ == null) {
        ensureNetworkInterfacesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, networkInterfaces_);
        onChanged();
      } else {
        networkInterfacesBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public Builder clearNetworkInterfaces() {
      if (networkInterfacesBuilder_ == null) {
        networkInterfaces_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
      } else {
        networkInterfacesBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public Builder removeNetworkInterfaces(int index) {
      if (networkInterfacesBuilder_ == null) {
        ensureNetworkInterfacesIsMutable();
        networkInterfaces_.remove(index);
        onChanged();
      } else {
        networkInterfacesBuilder_.remove(index);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public com.google.cloud.vmmigration.v1.NetworkInterface.Builder getNetworkInterfacesBuilder(
        int index) {
      return getNetworkInterfacesFieldBuilder().getBuilder(index);
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public com.google.cloud.vmmigration.v1.NetworkInterfaceOrBuilder getNetworkInterfacesOrBuilder(
        int index) {
      if (networkInterfacesBuilder_ == null) {
        return networkInterfaces_.get(index);
      } else {
        return networkInterfacesBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public java.util.List<? extends com.google.cloud.vmmigration.v1.NetworkInterfaceOrBuilder>
        getNetworkInterfacesOrBuilderList() {
      if (networkInterfacesBuilder_ != null) {
        return networkInterfacesBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(networkInterfaces_);
      }
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public com.google.cloud.vmmigration.v1.NetworkInterface.Builder addNetworkInterfacesBuilder() {
      return getNetworkInterfacesFieldBuilder()
          .addBuilder(com.google.cloud.vmmigration.v1.NetworkInterface.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public com.google.cloud.vmmigration.v1.NetworkInterface.Builder addNetworkInterfacesBuilder(
        int index) {
      return getNetworkInterfacesFieldBuilder()
          .addBuilder(index, com.google.cloud.vmmigration.v1.NetworkInterface.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * List of NICs connected to this VM.
     * </pre>
     *
     * <code>repeated .google.cloud.vmmigration.v1.NetworkInterface network_interfaces = 7;</code>
     */
    public java.util.List<com.google.cloud.vmmigration.v1.NetworkInterface.Builder>
        getNetworkInterfacesBuilderList() {
      return getNetworkInterfacesFieldBuilder().getBuilderList();
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.cloud.vmmigration.v1.NetworkInterface,
            com.google.cloud.vmmigration.v1.NetworkInterface.Builder,
            com.google.cloud.vmmigration.v1.NetworkInterfaceOrBuilder>
        getNetworkInterfacesFieldBuilder() {
      if (networkInterfacesBuilder_ == null) {
        networkInterfacesBuilder_ =
            new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.cloud.vmmigration.v1.NetworkInterface,
                com.google.cloud.vmmigration.v1.NetworkInterface.Builder,
                com.google.cloud.vmmigration.v1.NetworkInterfaceOrBuilder>(
                networkInterfaces_,
                ((bitField0_ & 0x00000040) != 0),
                getParentForChildren(),
                isClean());
        networkInterfaces_ = null;
      }
      return networkInterfacesBuilder_;
    }

    private java.lang.Object serviceAccount_ = "";
    /**
     *
     *
     * <pre>
     * The service account to associate the VM with.
     * </pre>
     *
     * <code>string service_account = 8;</code>
     *
     * @return The serviceAccount.
     */
    public java.lang.String getServiceAccount() {
      java.lang.Object ref = serviceAccount_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        serviceAccount_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The service account to associate the VM with.
     * </pre>
     *
     * <code>string service_account = 8;</code>
     *
     * @return The bytes for serviceAccount.
     */
    public com.google.protobuf.ByteString getServiceAccountBytes() {
      java.lang.Object ref = serviceAccount_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        serviceAccount_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The service account to associate the VM with.
     * </pre>
     *
     * <code>string service_account = 8;</code>
     *
     * @param value The serviceAccount to set.
     * @return This builder for chaining.
     */
    public Builder setServiceAccount(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      serviceAccount_ = value;
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The service account to associate the VM with.
     * </pre>
     *
     * <code>string service_account = 8;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearServiceAccount() {
      serviceAccount_ = getDefaultInstance().getServiceAccount();
      bitField0_ = (bitField0_ & ~0x00000080);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The service account to associate the VM with.
     * </pre>
     *
     * <code>string service_account = 8;</code>
     *
     * @param value The bytes for serviceAccount to set.
     * @return This builder for chaining.
     */
    public Builder setServiceAccountBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      serviceAccount_ = value;
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }

    private int diskType_ = 0;
    /**
     *
     *
     * <pre>
     * The disk type to use in the VM.
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeEngineDiskType disk_type = 9;</code>
     *
     * @return The enum numeric value on the wire for diskType.
     */
    @java.lang.Override
    public int getDiskTypeValue() {
      return diskType_;
    }
    /**
     *
     *
     * <pre>
     * The disk type to use in the VM.
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeEngineDiskType disk_type = 9;</code>
     *
     * @param value The enum numeric value on the wire for diskType to set.
     * @return This builder for chaining.
     */
    public Builder setDiskTypeValue(int value) {
      diskType_ = value;
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The disk type to use in the VM.
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeEngineDiskType disk_type = 9;</code>
     *
     * @return The diskType.
     */
    @java.lang.Override
    public com.google.cloud.vmmigration.v1.ComputeEngineDiskType getDiskType() {
      com.google.cloud.vmmigration.v1.ComputeEngineDiskType result =
          com.google.cloud.vmmigration.v1.ComputeEngineDiskType.forNumber(diskType_);
      return result == null
          ? com.google.cloud.vmmigration.v1.ComputeEngineDiskType.UNRECOGNIZED
          : result;
    }
    /**
     *
     *
     * <pre>
     * The disk type to use in the VM.
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeEngineDiskType disk_type = 9;</code>
     *
     * @param value The diskType to set.
     * @return This builder for chaining.
     */
    public Builder setDiskType(com.google.cloud.vmmigration.v1.ComputeEngineDiskType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000100;
      diskType_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The disk type to use in the VM.
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeEngineDiskType disk_type = 9;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearDiskType() {
      bitField0_ = (bitField0_ & ~0x00000100);
      diskType_ = 0;
      onChanged();
      return this;
    }

    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_ |= 0x00000200;
      onChanged();
      return labels_;
    }

    public int getLabelsCount() {
      return internalGetLabels().getMap().size();
    }
    /**
     *
     *
     * <pre>
     * A map of labels to associate with the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 10;</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>
     * A map of labels to associate with the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 10;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
      return internalGetLabels().getMap();
    }
    /**
     *
     *
     * <pre>
     * A map of labels to associate with the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 10;</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>
     * A map of labels to associate with the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 10;</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_ & ~0x00000200);
      internalGetMutableLabels().getMutableMap().clear();
      return this;
    }
    /**
     *
     *
     * <pre>
     * A map of labels to associate with the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 10;</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_ |= 0x00000200;
      return internalGetMutableLabels().getMutableMap();
    }
    /**
     *
     *
     * <pre>
     * A map of labels to associate with the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 10;</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_ |= 0x00000200;
      return this;
    }
    /**
     *
     *
     * <pre>
     * A map of labels to associate with the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 10;</code>
     */
    public Builder putAllLabels(java.util.Map<java.lang.String, java.lang.String> values) {
      internalGetMutableLabels().getMutableMap().putAll(values);
      bitField0_ |= 0x00000200;
      return this;
    }

    private int licenseType_ = 0;
    /**
     *
     *
     * <pre>
     * The license type to use in OS adaptation.
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeEngineLicenseType license_type = 11;</code>
     *
     * @return The enum numeric value on the wire for licenseType.
     */
    @java.lang.Override
    public int getLicenseTypeValue() {
      return licenseType_;
    }
    /**
     *
     *
     * <pre>
     * The license type to use in OS adaptation.
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeEngineLicenseType license_type = 11;</code>
     *
     * @param value The enum numeric value on the wire for licenseType to set.
     * @return This builder for chaining.
     */
    public Builder setLicenseTypeValue(int value) {
      licenseType_ = value;
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The license type to use in OS adaptation.
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeEngineLicenseType license_type = 11;</code>
     *
     * @return The licenseType.
     */
    @java.lang.Override
    public com.google.cloud.vmmigration.v1.ComputeEngineLicenseType getLicenseType() {
      com.google.cloud.vmmigration.v1.ComputeEngineLicenseType result =
          com.google.cloud.vmmigration.v1.ComputeEngineLicenseType.forNumber(licenseType_);
      return result == null
          ? com.google.cloud.vmmigration.v1.ComputeEngineLicenseType.UNRECOGNIZED
          : result;
    }
    /**
     *
     *
     * <pre>
     * The license type to use in OS adaptation.
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeEngineLicenseType license_type = 11;</code>
     *
     * @param value The licenseType to set.
     * @return This builder for chaining.
     */
    public Builder setLicenseType(com.google.cloud.vmmigration.v1.ComputeEngineLicenseType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000400;
      licenseType_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The license type to use in OS adaptation.
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeEngineLicenseType license_type = 11;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearLicenseType() {
      bitField0_ = (bitField0_ & ~0x00000400);
      licenseType_ = 0;
      onChanged();
      return this;
    }

    private com.google.cloud.vmmigration.v1.AppliedLicense appliedLicense_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.vmmigration.v1.AppliedLicense,
            com.google.cloud.vmmigration.v1.AppliedLicense.Builder,
            com.google.cloud.vmmigration.v1.AppliedLicenseOrBuilder>
        appliedLicenseBuilder_;
    /**
     *
     *
     * <pre>
     * Output only. The OS license returned from the adaptation module report.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return Whether the appliedLicense field is set.
     */
    public boolean hasAppliedLicense() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     *
     *
     * <pre>
     * Output only. The OS license returned from the adaptation module report.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return The appliedLicense.
     */
    public com.google.cloud.vmmigration.v1.AppliedLicense getAppliedLicense() {
      if (appliedLicenseBuilder_ == null) {
        return appliedLicense_ == null
            ? com.google.cloud.vmmigration.v1.AppliedLicense.getDefaultInstance()
            : appliedLicense_;
      } else {
        return appliedLicenseBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Output only. The OS license returned from the adaptation module report.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    public Builder setAppliedLicense(com.google.cloud.vmmigration.v1.AppliedLicense value) {
      if (appliedLicenseBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        appliedLicense_ = value;
      } else {
        appliedLicenseBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000800;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Output only. The OS license returned from the adaptation module report.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    public Builder setAppliedLicense(
        com.google.cloud.vmmigration.v1.AppliedLicense.Builder builderForValue) {
      if (appliedLicenseBuilder_ == null) {
        appliedLicense_ = builderForValue.build();
      } else {
        appliedLicenseBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000800;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Output only. The OS license returned from the adaptation module report.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    public Builder mergeAppliedLicense(com.google.cloud.vmmigration.v1.AppliedLicense value) {
      if (appliedLicenseBuilder_ == null) {
        if (((bitField0_ & 0x00000800) != 0)
            && appliedLicense_ != null
            && appliedLicense_
                != com.google.cloud.vmmigration.v1.AppliedLicense.getDefaultInstance()) {
          getAppliedLicenseBuilder().mergeFrom(value);
        } else {
          appliedLicense_ = value;
        }
      } else {
        appliedLicenseBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000800;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Output only. The OS license returned from the adaptation module report.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    public Builder clearAppliedLicense() {
      bitField0_ = (bitField0_ & ~0x00000800);
      appliedLicense_ = null;
      if (appliedLicenseBuilder_ != null) {
        appliedLicenseBuilder_.dispose();
        appliedLicenseBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Output only. The OS license returned from the adaptation module report.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    public com.google.cloud.vmmigration.v1.AppliedLicense.Builder getAppliedLicenseBuilder() {
      bitField0_ |= 0x00000800;
      onChanged();
      return getAppliedLicenseFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Output only. The OS license returned from the adaptation module report.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    public com.google.cloud.vmmigration.v1.AppliedLicenseOrBuilder getAppliedLicenseOrBuilder() {
      if (appliedLicenseBuilder_ != null) {
        return appliedLicenseBuilder_.getMessageOrBuilder();
      } else {
        return appliedLicense_ == null
            ? com.google.cloud.vmmigration.v1.AppliedLicense.getDefaultInstance()
            : appliedLicense_;
      }
    }
    /**
     *
     *
     * <pre>
     * Output only. The OS license returned from the adaptation module report.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.AppliedLicense applied_license = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.vmmigration.v1.AppliedLicense,
            com.google.cloud.vmmigration.v1.AppliedLicense.Builder,
            com.google.cloud.vmmigration.v1.AppliedLicenseOrBuilder>
        getAppliedLicenseFieldBuilder() {
      if (appliedLicenseBuilder_ == null) {
        appliedLicenseBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.vmmigration.v1.AppliedLicense,
                com.google.cloud.vmmigration.v1.AppliedLicense.Builder,
                com.google.cloud.vmmigration.v1.AppliedLicenseOrBuilder>(
                getAppliedLicense(), getParentForChildren(), isClean());
        appliedLicense_ = null;
      }
      return appliedLicenseBuilder_;
    }

    private com.google.cloud.vmmigration.v1.ComputeScheduling computeScheduling_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.vmmigration.v1.ComputeScheduling,
            com.google.cloud.vmmigration.v1.ComputeScheduling.Builder,
            com.google.cloud.vmmigration.v1.ComputeSchedulingOrBuilder>
        computeSchedulingBuilder_;
    /**
     *
     *
     * <pre>
     * Compute instance scheduling information (if empty default is used).
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
     *
     * @return Whether the computeScheduling field is set.
     */
    public boolean hasComputeScheduling() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     *
     *
     * <pre>
     * Compute instance scheduling information (if empty default is used).
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
     *
     * @return The computeScheduling.
     */
    public com.google.cloud.vmmigration.v1.ComputeScheduling getComputeScheduling() {
      if (computeSchedulingBuilder_ == null) {
        return computeScheduling_ == null
            ? com.google.cloud.vmmigration.v1.ComputeScheduling.getDefaultInstance()
            : computeScheduling_;
      } else {
        return computeSchedulingBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Compute instance scheduling information (if empty default is used).
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
     */
    public Builder setComputeScheduling(com.google.cloud.vmmigration.v1.ComputeScheduling value) {
      if (computeSchedulingBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        computeScheduling_ = value;
      } else {
        computeSchedulingBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Compute instance scheduling information (if empty default is used).
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
     */
    public Builder setComputeScheduling(
        com.google.cloud.vmmigration.v1.ComputeScheduling.Builder builderForValue) {
      if (computeSchedulingBuilder_ == null) {
        computeScheduling_ = builderForValue.build();
      } else {
        computeSchedulingBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Compute instance scheduling information (if empty default is used).
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
     */
    public Builder mergeComputeScheduling(com.google.cloud.vmmigration.v1.ComputeScheduling value) {
      if (computeSchedulingBuilder_ == null) {
        if (((bitField0_ & 0x00001000) != 0)
            && computeScheduling_ != null
            && computeScheduling_
                != com.google.cloud.vmmigration.v1.ComputeScheduling.getDefaultInstance()) {
          getComputeSchedulingBuilder().mergeFrom(value);
        } else {
          computeScheduling_ = value;
        }
      } else {
        computeSchedulingBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Compute instance scheduling information (if empty default is used).
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
     */
    public Builder clearComputeScheduling() {
      bitField0_ = (bitField0_ & ~0x00001000);
      computeScheduling_ = null;
      if (computeSchedulingBuilder_ != null) {
        computeSchedulingBuilder_.dispose();
        computeSchedulingBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Compute instance scheduling information (if empty default is used).
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
     */
    public com.google.cloud.vmmigration.v1.ComputeScheduling.Builder getComputeSchedulingBuilder() {
      bitField0_ |= 0x00001000;
      onChanged();
      return getComputeSchedulingFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Compute instance scheduling information (if empty default is used).
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
     */
    public com.google.cloud.vmmigration.v1.ComputeSchedulingOrBuilder
        getComputeSchedulingOrBuilder() {
      if (computeSchedulingBuilder_ != null) {
        return computeSchedulingBuilder_.getMessageOrBuilder();
      } else {
        return computeScheduling_ == null
            ? com.google.cloud.vmmigration.v1.ComputeScheduling.getDefaultInstance()
            : computeScheduling_;
      }
    }
    /**
     *
     *
     * <pre>
     * Compute instance scheduling information (if empty default is used).
     * </pre>
     *
     * <code>.google.cloud.vmmigration.v1.ComputeScheduling compute_scheduling = 13;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.vmmigration.v1.ComputeScheduling,
            com.google.cloud.vmmigration.v1.ComputeScheduling.Builder,
            com.google.cloud.vmmigration.v1.ComputeSchedulingOrBuilder>
        getComputeSchedulingFieldBuilder() {
      if (computeSchedulingBuilder_ == null) {
        computeSchedulingBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.vmmigration.v1.ComputeScheduling,
                com.google.cloud.vmmigration.v1.ComputeScheduling.Builder,
                com.google.cloud.vmmigration.v1.ComputeSchedulingOrBuilder>(
                getComputeScheduling(), getParentForChildren(), isClean());
        computeScheduling_ = null;
      }
      return computeSchedulingBuilder_;
    }

    private boolean secureBoot_;
    /**
     *
     *
     * <pre>
     * Defines whether the instance has Secure Boot enabled.
     * This can be set to true only if the vm boot option is EFI.
     * </pre>
     *
     * <code>bool secure_boot = 14;</code>
     *
     * @return The secureBoot.
     */
    @java.lang.Override
    public boolean getSecureBoot() {
      return secureBoot_;
    }
    /**
     *
     *
     * <pre>
     * Defines whether the instance has Secure Boot enabled.
     * This can be set to true only if the vm boot option is EFI.
     * </pre>
     *
     * <code>bool secure_boot = 14;</code>
     *
     * @param value The secureBoot to set.
     * @return This builder for chaining.
     */
    public Builder setSecureBoot(boolean value) {

      secureBoot_ = value;
      bitField0_ |= 0x00002000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Defines whether the instance has Secure Boot enabled.
     * This can be set to true only if the vm boot option is EFI.
     * </pre>
     *
     * <code>bool secure_boot = 14;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearSecureBoot() {
      bitField0_ = (bitField0_ & ~0x00002000);
      secureBoot_ = false;
      onChanged();
      return this;
    }

    private int bootOption_ = 0;
    /**
     *
     *
     * <pre>
     * Output only. The VM Boot Option, as set in the source vm.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.ComputeEngineBootOption boot_option = 15 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return The enum numeric value on the wire for bootOption.
     */
    @java.lang.Override
    public int getBootOptionValue() {
      return bootOption_;
    }
    /**
     *
     *
     * <pre>
     * Output only. The VM Boot Option, as set in the source vm.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.ComputeEngineBootOption boot_option = 15 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @param value The enum numeric value on the wire for bootOption to set.
     * @return This builder for chaining.
     */
    public Builder setBootOptionValue(int value) {
      bootOption_ = value;
      bitField0_ |= 0x00004000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Output only. The VM Boot Option, as set in the source vm.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.ComputeEngineBootOption boot_option = 15 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return The bootOption.
     */
    @java.lang.Override
    public com.google.cloud.vmmigration.v1.ComputeEngineBootOption getBootOption() {
      com.google.cloud.vmmigration.v1.ComputeEngineBootOption result =
          com.google.cloud.vmmigration.v1.ComputeEngineBootOption.forNumber(bootOption_);
      return result == null
          ? com.google.cloud.vmmigration.v1.ComputeEngineBootOption.UNRECOGNIZED
          : result;
    }
    /**
     *
     *
     * <pre>
     * Output only. The VM Boot Option, as set in the source vm.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.ComputeEngineBootOption boot_option = 15 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @param value The bootOption to set.
     * @return This builder for chaining.
     */
    public Builder setBootOption(com.google.cloud.vmmigration.v1.ComputeEngineBootOption value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00004000;
      bootOption_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Output only. The VM Boot Option, as set in the source vm.
     * </pre>
     *
     * <code>
     * .google.cloud.vmmigration.v1.ComputeEngineBootOption boot_option = 15 [(.google.api.field_behavior) = OUTPUT_ONLY];
     * </code>
     *
     * @return This builder for chaining.
     */
    public Builder clearBootOption() {
      bitField0_ = (bitField0_ & ~0x00004000);
      bootOption_ = 0;
      onChanged();
      return this;
    }

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

    private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetMetadata() {
      if (metadata_ == null) {
        return com.google.protobuf.MapField.emptyMapField(MetadataDefaultEntryHolder.defaultEntry);
      }
      return metadata_;
    }

    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
        internalGetMutableMetadata() {
      if (metadata_ == null) {
        metadata_ =
            com.google.protobuf.MapField.newMapField(MetadataDefaultEntryHolder.defaultEntry);
      }
      if (!metadata_.isMutable()) {
        metadata_ = metadata_.copy();
      }
      bitField0_ |= 0x00008000;
      onChanged();
      return metadata_;
    }

    public int getMetadataCount() {
      return internalGetMetadata().getMap().size();
    }
    /**
     *
     *
     * <pre>
     * The metadata key/value pairs to assign to the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 16;</code>
     */
    @java.lang.Override
    public boolean containsMetadata(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      return internalGetMetadata().getMap().containsKey(key);
    }
    /** Use {@link #getMetadataMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getMetadata() {
      return getMetadataMap();
    }
    /**
     *
     *
     * <pre>
     * The metadata key/value pairs to assign to the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 16;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getMetadataMap() {
      return internalGetMetadata().getMap();
    }
    /**
     *
     *
     * <pre>
     * The metadata key/value pairs to assign to the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 16;</code>
     */
    @java.lang.Override
    public /* nullable */ java.lang.String getMetadataOrDefault(
        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 = internalGetMetadata().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     *
     *
     * <pre>
     * The metadata key/value pairs to assign to the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 16;</code>
     */
    @java.lang.Override
    public java.lang.String getMetadataOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.String> map = internalGetMetadata().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public Builder clearMetadata() {
      bitField0_ = (bitField0_ & ~0x00008000);
      internalGetMutableMetadata().getMutableMap().clear();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The metadata key/value pairs to assign to the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 16;</code>
     */
    public Builder removeMetadata(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      internalGetMutableMetadata().getMutableMap().remove(key);
      return this;
    }
    /** Use alternate mutation accessors instead. */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getMutableMetadata() {
      bitField0_ |= 0x00008000;
      return internalGetMutableMetadata().getMutableMap();
    }
    /**
     *
     *
     * <pre>
     * The metadata key/value pairs to assign to the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 16;</code>
     */
    public Builder putMetadata(java.lang.String key, java.lang.String value) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      if (value == null) {
        throw new NullPointerException("map value");
      }
      internalGetMutableMetadata().getMutableMap().put(key, value);
      bitField0_ |= 0x00008000;
      return this;
    }
    /**
     *
     *
     * <pre>
     * The metadata key/value pairs to assign to the VM.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 16;</code>
     */
    public Builder putAllMetadata(java.util.Map<java.lang.String, java.lang.String> values) {
      internalGetMutableMetadata().getMutableMap().putAll(values);
      bitField0_ |= 0x00008000;
      return this;
    }

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

    private void ensureAdditionalLicensesIsMutable() {
      if (!((bitField0_ & 0x00010000) != 0)) {
        additionalLicenses_ = new com.google.protobuf.LazyStringArrayList(additionalLicenses_);
        bitField0_ |= 0x00010000;
      }
    }
    /**
     *
     *
     * <pre>
     * Additional licenses to assign to the VM.
     * </pre>
     *
     * <code>repeated string additional_licenses = 17;</code>
     *
     * @return A list containing the additionalLicenses.
     */
    public com.google.protobuf.ProtocolStringList getAdditionalLicensesList() {
      return additionalLicenses_.getUnmodifiableView();
    }
    /**
     *
     *
     * <pre>
     * Additional licenses to assign to the VM.
     * </pre>
     *
     * <code>repeated string additional_licenses = 17;</code>
     *
     * @return The count of additionalLicenses.
     */
    public int getAdditionalLicensesCount() {
      return additionalLicenses_.size();
    }
    /**
     *
     *
     * <pre>
     * Additional licenses to assign to the VM.
     * </pre>
     *
     * <code>repeated string additional_licenses = 17;</code>
     *
     * @param index The index of the element to return.
     * @return The additionalLicenses at the given index.
     */
    public java.lang.String getAdditionalLicenses(int index) {
      return additionalLicenses_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Additional licenses to assign to the VM.
     * </pre>
     *
     * <code>repeated string additional_licenses = 17;</code>
     *
     * @param index The index of the value to return.
     * @return The bytes of the additionalLicenses at the given index.
     */
    public com.google.protobuf.ByteString getAdditionalLicensesBytes(int index) {
      return additionalLicenses_.getByteString(index);
    }
    /**
     *
     *
     * <pre>
     * Additional licenses to assign to the VM.
     * </pre>
     *
     * <code>repeated string additional_licenses = 17;</code>
     *
     * @param index The index to set the value at.
     * @param value The additionalLicenses to set.
     * @return This builder for chaining.
     */
    public Builder setAdditionalLicenses(int index, java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureAdditionalLicensesIsMutable();
      additionalLicenses_.set(index, value);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Additional licenses to assign to the VM.
     * </pre>
     *
     * <code>repeated string additional_licenses = 17;</code>
     *
     * @param value The additionalLicenses to add.
     * @return This builder for chaining.
     */
    public Builder addAdditionalLicenses(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureAdditionalLicensesIsMutable();
      additionalLicenses_.add(value);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Additional licenses to assign to the VM.
     * </pre>
     *
     * <code>repeated string additional_licenses = 17;</code>
     *
     * @param values The additionalLicenses to add.
     * @return This builder for chaining.
     */
    public Builder addAllAdditionalLicenses(java.lang.Iterable<java.lang.String> values) {
      ensureAdditionalLicensesIsMutable();
      com.google.protobuf.AbstractMessageLite.Builder.addAll(values, additionalLicenses_);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Additional licenses to assign to the VM.
     * </pre>
     *
     * <code>repeated string additional_licenses = 17;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearAdditionalLicenses() {
      additionalLicenses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      bitField0_ = (bitField0_ & ~0x00010000);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Additional licenses to assign to the VM.
     * </pre>
     *
     * <code>repeated string additional_licenses = 17;</code>
     *
     * @param value The bytes of the additionalLicenses to add.
     * @return This builder for chaining.
     */
    public Builder addAdditionalLicensesBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      ensureAdditionalLicensesIsMutable();
      additionalLicenses_.add(value);
      onChanged();
      return this;
    }

    private java.lang.Object hostname_ = "";
    /**
     *
     *
     * <pre>
     * The hostname to assign to the VM.
     * </pre>
     *
     * <code>string hostname = 18;</code>
     *
     * @return The hostname.
     */
    public java.lang.String getHostname() {
      java.lang.Object ref = hostname_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        hostname_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The hostname to assign to the VM.
     * </pre>
     *
     * <code>string hostname = 18;</code>
     *
     * @return The bytes for hostname.
     */
    public com.google.protobuf.ByteString getHostnameBytes() {
      java.lang.Object ref = hostname_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        hostname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The hostname to assign to the VM.
     * </pre>
     *
     * <code>string hostname = 18;</code>
     *
     * @param value The hostname to set.
     * @return This builder for chaining.
     */
    public Builder setHostname(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      hostname_ = value;
      bitField0_ |= 0x00020000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The hostname to assign to the VM.
     * </pre>
     *
     * <code>string hostname = 18;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearHostname() {
      hostname_ = getDefaultInstance().getHostname();
      bitField0_ = (bitField0_ & ~0x00020000);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The hostname to assign to the VM.
     * </pre>
     *
     * <code>string hostname = 18;</code>
     *
     * @param value The bytes for hostname to set.
     * @return This builder for chaining.
     */
    public Builder setHostnameBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      hostname_ = value;
      bitField0_ |= 0x00020000;
      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.vmmigration.v1.ComputeEngineTargetDefaults)
  }

  // @@protoc_insertion_point(class_scope:google.cloud.vmmigration.v1.ComputeEngineTargetDefaults)
  private static final com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults DEFAULT_INSTANCE;

  static {
    DEFAULT_INSTANCE = new com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults();
  }

  public static com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

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

  @java.lang.Override
  public com.google.cloud.vmmigration.v1.ComputeEngineTargetDefaults getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }
}
