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

    if (!getName().equals(other.getName())) return false;
    if (!getUid().equals(other.getUid())) return false;
    if (!getTargetResource().equals(other.getTargetResource())) return false;
    if (!getEventTypesList().equals(other.getEventTypesList())) return false;
    if (hasPayloadOptions() != other.hasPayloadOptions()) return false;
    if (hasPayloadOptions()) {
      if (!getPayloadOptions().equals(other.getPayloadOptions())) return false;
    }
    if (hasNotificationEndpoint() != other.hasNotificationEndpoint()) return false;
    if (hasNotificationEndpoint()) {
      if (!getNotificationEndpoint().equals(other.getNotificationEndpoint())) return false;
    }
    if (state_ != other.state_) return false;
    if (suspensionReason_ != other.suspensionReason_) return false;
    if (!getAuthority().equals(other.getAuthority())) 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 (getReconciling() != other.getReconciling()) return false;
    if (!getEtag().equals(other.getEtag())) return false;
    if (!getExpirationCase().equals(other.getExpirationCase())) return false;
    switch (expirationCase_) {
      case 13:
        if (!getExpireTime().equals(other.getExpireTime())) return false;
        break;
      case 14:
        if (!getTtl().equals(other.getTtl())) return false;
        break;
      case 0:
      default:
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }
<pre>
Optional. This checksum is computed by the server based on the value of
other fields, and might be sent on update requests to ensure the client has
an up-to-date value before proceeding.
</pre>

<code>string etag = 17 [(.google.api.field_behavior) = OPTIONAL];</code>

@return The bytes for etag.
java-workspaceevents/proto-google-cloud-workspaceevents-v1/src/main/java/com/google/apps/events/subscriptions/v1/Subscription.java