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

    if (!getName().equals(other.getName())) return false;
    if (!getSourceVmId().equals(other.getSourceVmId())) return false;
    if (!getDisplayName().equals(other.getDisplayName())) return false;
    if (!getDescription().equals(other.getDescription())) return false;
    if (hasPolicy() != other.hasPolicy()) return false;
    if (hasPolicy()) {
      if (!getPolicy().equals(other.getPolicy())) return false;
    }
    if (hasCreateTime() != other.hasCreateTime()) return false;
    if (hasCreateTime()) {
      if (!getCreateTime().equals(other.getCreateTime())) return false;
    }
    if (hasUpdateTime() != other.hasUpdateTime()) return false;
    if (hasUpdateTime()) {
      if (!getUpdateTime().equals(other.getUpdateTime())) return false;
    }
    if (hasLastSync() != other.hasLastSync()) return false;
    if (hasLastSync()) {
      if (!getLastSync().equals(other.getLastSync())) return false;
    }
    if (state_ != other.state_) return false;
    if (hasStateTime() != other.hasStateTime()) return false;
    if (hasStateTime()) {
      if (!getStateTime().equals(other.getStateTime())) return false;
    }
    if (hasCurrentSyncInfo() != other.hasCurrentSyncInfo()) return false;
    if (hasCurrentSyncInfo()) {
      if (!getCurrentSyncInfo().equals(other.getCurrentSyncInfo())) return false;
    }
    if (!getGroup().equals(other.getGroup())) return false;
    if (!internalGetLabels().equals(other.internalGetLabels())) return false;
    if (!getRecentCloneJobsList().equals(other.getRecentCloneJobsList())) return false;
    if (hasError() != other.hasError()) return false;
    if (hasError()) {
      if (!getError().equals(other.getError())) return false;
    }
    if (!getRecentCutoverJobsList().equals(other.getRecentCutoverJobsList())) return false;
    if (!getTargetVmDefaultsCase().equals(other.getTargetVmDefaultsCase())) return false;
    switch (targetVmDefaultsCase_) {
      case 26:
        if (!getComputeEngineTargetDefaults().equals(other.getComputeEngineTargetDefaults()))
          return false;
        break;
      case 0:
      default:
    }
    if (!getSourceVmDetailsCase().equals(other.getSourceVmDetailsCase())) return false;
    switch (sourceVmDetailsCase_) {
      case 29:
        if (!getAwsSourceVmDetails().equals(other.getAwsSourceVmDetails())) return false;
        break;
      case 0:
      default:
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }
<pre>
Output only. The recent cutover jobs performed on the migrating VM.
This field holds the vm's last completed cutover job and the vm's
running cutover job, if one exists.
Note: To have this field populated you need to explicitly request it via
the "view" parameter of the Get/List request.
</pre>

<code>
repeated .google.cloud.vmmigration.v1.CutoverJob recent_cutover_jobs = 20 [(.google.api.field_behavior) = OUTPUT_ONLY];
</code>
java-vmmigration/proto-google-cloud-vmmigration-v1/src/main/java/com/google/cloud/vmmigration/v1/MigratingVm.java