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

    if (!getId().equals(other.getId())) return false;
    if (!getModel().equals(other.getModel())) return false;
    if (!getModelVersionId().equals(other.getModelVersionId())) return false;
    if (!getDisplayName().equals(other.getDisplayName())) return false;
    if (hasCreateTime() != other.hasCreateTime()) return false;
    if (hasCreateTime()) {
      if (!getCreateTime().equals(other.getCreateTime())) return false;
    }
    if (hasExplanationSpec() != other.hasExplanationSpec()) return false;
    if (hasExplanationSpec()) {
      if (!getExplanationSpec().equals(other.getExplanationSpec())) return false;
    }
    if (getDisableExplanations() != other.getDisableExplanations()) return false;
    if (!getServiceAccount().equals(other.getServiceAccount())) return false;
    if (getDisableContainerLogging() != other.getDisableContainerLogging()) return false;
    if (getEnableAccessLogging() != other.getEnableAccessLogging()) return false;
    if (hasPrivateEndpoints() != other.hasPrivateEndpoints()) return false;
    if (hasPrivateEndpoints()) {
      if (!getPrivateEndpoints().equals(other.getPrivateEndpoints())) return false;
    }
    if (hasFasterDeploymentConfig() != other.hasFasterDeploymentConfig()) return false;
    if (hasFasterDeploymentConfig()) {
      if (!getFasterDeploymentConfig().equals(other.getFasterDeploymentConfig())) return false;
    }
    if (hasStatus() != other.hasStatus()) return false;
    if (hasStatus()) {
      if (!getStatus().equals(other.getStatus())) return false;
    }
    if (!internalGetSystemLabels().equals(other.internalGetSystemLabels())) return false;
    if (hasSpeculativeDecodingSpec() != other.hasSpeculativeDecodingSpec()) return false;
    if (hasSpeculativeDecodingSpec()) {
      if (!getSpeculativeDecodingSpec().equals(other.getSpeculativeDecodingSpec())) return false;
    }
    if (!getPredictionResourcesCase().equals(other.getPredictionResourcesCase())) return false;
    switch (predictionResourcesCase_) {
      case 7:
        if (!getDedicatedResources().equals(other.getDedicatedResources())) return false;
        break;
      case 8:
        if (!getAutomaticResources().equals(other.getAutomaticResources())) return false;
        break;
      case 17:
        if (!getSharedResources().equals(other.getSharedResources())) return false;
        break;
      case 0:
      default:
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }
<pre>
Optional. Spec for configuring speculative decoding.
</pre>

<code>
.google.cloud.vertexai.v1.SpeculativeDecodingSpec speculative_decoding_spec = 30 [(.google.api.field_behavior) = OPTIONAL];
</code>
java-vertexai/proto-google-cloud-vertexai-v1/src/main/java/com/google/cloud/vertexai/api/DeployedModel.java