@java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + NAME_FIELD_NUMBER;
    hash = (53 * hash) + getName().hashCode();
    if (hasCreateTime()) {
      hash = (37 * hash) + CREATE_TIME_FIELD_NUMBER;
      hash = (53 * hash) + getCreateTime().hashCode();
    }
    if (hasUpdateTime()) {
      hash = (37 * hash) + UPDATE_TIME_FIELD_NUMBER;
      hash = (53 * hash) + getUpdateTime().hashCode();
    }
    if (!internalGetLabels().getMap().isEmpty()) {
      hash = (37 * hash) + LABELS_FIELD_NUMBER;
      hash = (53 * hash) + internalGetLabels().hashCode();
    }
    if (getInputAttachmentsCount() > 0) {
      hash = (37 * hash) + INPUT_ATTACHMENTS_FIELD_NUMBER;
      hash = (53 * hash) + getInputAttachmentsList().hashCode();
    }
    hash = (37 * hash) + ACTIVE_INPUT_FIELD_NUMBER;
    hash = (53 * hash) + getActiveInput().hashCode();
    if (hasOutput()) {
      hash = (37 * hash) + OUTPUT_FIELD_NUMBER;
      hash = (53 * hash) + getOutput().hashCode();
    }
    if (getElementaryStreamsCount() > 0) {
      hash = (37 * hash) + ELEMENTARY_STREAMS_FIELD_NUMBER;
      hash = (53 * hash) + getElementaryStreamsList().hashCode();
    }
    if (getMuxStreamsCount() > 0) {
      hash = (37 * hash) + MUX_STREAMS_FIELD_NUMBER;
      hash = (53 * hash) + getMuxStreamsList().hashCode();
    }
    if (getManifestsCount() > 0) {
      hash = (37 * hash) + MANIFESTS_FIELD_NUMBER;
      hash = (53 * hash) + getManifestsList().hashCode();
    }
    if (getSpriteSheetsCount() > 0) {
      hash = (37 * hash) + SPRITE_SHEETS_FIELD_NUMBER;
      hash = (53 * hash) + getSpriteSheetsList().hashCode();
    }
    hash = (37 * hash) + STREAMING_STATE_FIELD_NUMBER;
    hash = (53 * hash) + streamingState_;
    if (hasStreamingError()) {
      hash = (37 * hash) + STREAMING_ERROR_FIELD_NUMBER;
      hash = (53 * hash) + getStreamingError().hashCode();
    }
    if (hasLogConfig()) {
      hash = (37 * hash) + LOG_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getLogConfig().hashCode();
    }
    if (hasTimecodeConfig()) {
      hash = (37 * hash) + TIMECODE_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getTimecodeConfig().hashCode();
    }
    if (getEncryptionsCount() > 0) {
      hash = (37 * hash) + ENCRYPTIONS_FIELD_NUMBER;
      hash = (53 * hash) + getEncryptionsList().hashCode();
    }
    if (hasInputConfig()) {
      hash = (37 * hash) + INPUT_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getInputConfig().hashCode();
    }
    if (hasRetentionConfig()) {
      hash = (37 * hash) + RETENTION_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getRetentionConfig().hashCode();
    }
    if (getStaticOverlaysCount() > 0) {
      hash = (37 * hash) + STATIC_OVERLAYS_FIELD_NUMBER;
      hash = (53 * hash) + getStaticOverlaysList().hashCode();
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }
<pre>
Optional. List of static overlay images. Those images display over the
output content for the whole duration of the live stream.
</pre>

<code>
repeated .google.cloud.video.livestream.v1.StaticOverlay static_overlays = 27 [(.google.api.field_behavior) = OPTIONAL];
</code>
java-video-live-stream/proto-google-cloud-live-stream-v1/src/main/java/com/google/cloud/video/livestream/v1/Channel.java