@java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + API_FRAMEWORK_FIELD_NUMBER;
    hash = (53 * hash) + getApiFramework().hashCode();
    hash = (37 * hash) + HEIGHT_PX_FIELD_NUMBER;
    hash = (53 * hash) + getHeightPx();
    hash = (37 * hash) + WIDTH_PX_FIELD_NUMBER;
    hash = (53 * hash) + getWidthPx();
    hash = (37 * hash) + ASSET_HEIGHT_PX_FIELD_NUMBER;
    hash = (53 * hash) + getAssetHeightPx();
    hash = (37 * hash) + EXPANDED_HEIGHT_PX_FIELD_NUMBER;
    hash = (53 * hash) + getExpandedHeightPx();
    hash = (37 * hash) + ASSET_WIDTH_PX_FIELD_NUMBER;
    hash = (53 * hash) + getAssetWidthPx();
    hash = (37 * hash) + EXPANDED_WIDTH_PX_FIELD_NUMBER;
    hash = (53 * hash) + getExpandedWidthPx();
    hash = (37 * hash) + AD_SLOT_ID_FIELD_NUMBER;
    hash = (53 * hash) + getAdSlotId().hashCode();
    if (getEventsCount() > 0) {
      hash = (37 * hash) + EVENTS_FIELD_NUMBER;
      hash = (53 * hash) + getEventsList().hashCode();
    }
    switch (adResourceCase_) {
      case 10:
        hash = (37 * hash) + IFRAME_AD_RESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getIframeAdResource().hashCode();
        break;
      case 11:
        hash = (37 * hash) + STATIC_AD_RESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getStaticAdResource().hashCode();
        break;
      case 12:
        hash = (37 * hash) + HTML_AD_RESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getHtmlAdResource().hashCode();
        break;
      case 0:
      default:
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }
<pre>
The list of tracking events for the companion.
</pre>

<code>repeated .google.cloud.video.stitcher.v1.Event events = 9;</code>
java-video-stitcher/proto-google-cloud-video-stitcher-v1/src/main/java/com/google/cloud/video/stitcher/v1/Companion.java