@java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    if (hasDuration()) {
      hash = (37 * hash) + DURATION_FIELD_NUMBER;
      hash = (53 * hash) + getDuration().hashCode();
    }
    if (hasCompanionAds()) {
      hash = (37 * hash) + COMPANION_ADS_FIELD_NUMBER;
      hash = (53 * hash) + getCompanionAds().hashCode();
    }
    if (getActivityEventsCount() > 0) {
      hash = (37 * hash) + ACTIVITY_EVENTS_FIELD_NUMBER;
      hash = (53 * hash) + getActivityEventsList().hashCode();
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }
<pre>
The list of progress tracking events for the ad break. These can be of
the following IAB types: `MUTE`, `UNMUTE`, `PAUSE`, `CLICK`,
`CLICK_THROUGH`, `REWIND`, `RESUME`, `ERROR`, `FULLSCREEN`,
`EXIT_FULLSCREEN`, `EXPAND`, `COLLAPSE`, `ACCEPT_INVITATION_LINEAR`,
`CLOSE_LINEAR`, `SKIP`.
</pre>

<code>repeated .google.cloud.video.stitcher.v1.Event activity_events = 3;</code>
java-video-stitcher/proto-google-cloud-video-stitcher-v1/src/main/java/com/google/cloud/video/stitcher/v1/VodSessionAd.java