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

    if (hasCreateTime() != other.hasCreateTime()) return false;
    if (hasCreateTime()) {
      if (!getCreateTime().equals(other.getCreateTime())) return false;
    }
    if (hasEndTime() != other.hasEndTime()) return false;
    if (hasEndTime()) {
      if (!getEndTime().equals(other.getEndTime())) return false;
    }
    if (!getName().equals(other.getName())) return false;
    if (state_ != other.state_) return false;
    if (hasStateTime() != other.hasStateTime()) return false;
    if (hasStateTime()) {
      if (!getStateTime().equals(other.getStateTime())) return false;
    }
    if (hasError() != other.hasError()) return false;
    if (hasError()) {
      if (!getError().equals(other.getError())) return false;
    }
    if (!getStepsList().equals(other.getStepsList())) return false;
    if (!getTargetVmDetailsCase().equals(other.getTargetVmDetailsCase())) return false;
    switch (targetVmDetailsCase_) {
      case 20:
        if (!getComputeEngineTargetDetails().equals(other.getComputeEngineTargetDetails()))
          return false;
        break;
      case 0:
      default:
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }
<pre>
Output only. The clone steps list representing its progress.
</pre>

<code>
repeated .google.cloud.vmmigration.v1.CloneStep steps = 23 [(.google.api.field_behavior) = OUTPUT_ONLY];
</code>
java-vmmigration/proto-google-cloud-vmmigration-v1/src/main/java/com/google/cloud/vmmigration/v1/CloneJob.java