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

    if (!getName().equals(other.getName())) return false;
    if (!getDescription().equals(other.getDescription())) return false;
    if (state_ != other.state_) return false;
    if (!getRevisionId().equals(other.getRevisionId())) 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 (hasRevisionCreateTime() != other.hasRevisionCreateTime()) return false;
    if (hasRevisionCreateTime()) {
      if (!getRevisionCreateTime().equals(other.getRevisionCreateTime())) return false;
    }
    if (!internalGetLabels().equals(other.internalGetLabels())) return false;
    if (!getServiceAccount().equals(other.getServiceAccount())) return false;
    if (!getCryptoKeyName().equals(other.getCryptoKeyName())) return false;
    if (hasStateError() != other.hasStateError()) return false;
    if (hasStateError()) {
      if (!getStateError().equals(other.getStateError())) return false;
    }
    if (callLogLevel_ != other.callLogLevel_) return false;
    if (!internalGetUserEnvVars().equals(other.internalGetUserEnvVars())) return false;
    if (executionHistoryLevel_ != other.executionHistoryLevel_) return false;
    if (!getAllKmsKeysList().equals(other.getAllKmsKeysList())) return false;
    if (!getAllKmsKeysVersionsList().equals(other.getAllKmsKeysVersionsList())) return false;
    if (!getCryptoKeyVersion().equals(other.getCryptoKeyVersion())) return false;
    if (!internalGetTags().equals(other.internalGetTags())) return false;
    if (!getSourceCodeCase().equals(other.getSourceCodeCase())) return false;
    switch (sourceCodeCase_) {
      case 10:
        if (!getSourceContents().equals(other.getSourceContents())) return false;
        break;
      case 0:
      default:
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }
<pre>
Optional. Input only. Immutable. Tags associated with this workflow.
</pre>

<code>
map&lt;string, string&gt; tags = 19 [(.google.api.field_behavior) = INPUT_ONLY, (.google.api.field_behavior) = IMMUTABLE, (.google.api.field_behavior) = OPTIONAL];
</code>
java-workflows/proto-google-cloud-workflows-v1/src/main/java/com/google/cloud/workflows/v1/Workflow.java