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

    if (!getName().equals(other.getName())) 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 (!internalGetLabels().equals(other.internalGetLabels())) return false;
    if (!getInputAttachmentsList().equals(other.getInputAttachmentsList())) return false;
    if (!getActiveInput().equals(other.getActiveInput())) return false;
    if (hasOutput() != other.hasOutput()) return false;
    if (hasOutput()) {
      if (!getOutput().equals(other.getOutput())) return false;
    }
    if (!getElementaryStreamsList().equals(other.getElementaryStreamsList())) return false;
    if (!getMuxStreamsList().equals(other.getMuxStreamsList())) return false;
    if (!getManifestsList().equals(other.getManifestsList())) return false;
    if (!getSpriteSheetsList().equals(other.getSpriteSheetsList())) return false;
    if (streamingState_ != other.streamingState_) return false;
    if (hasStreamingError() != other.hasStreamingError()) return false;
    if (hasStreamingError()) {
      if (!getStreamingError().equals(other.getStreamingError())) return false;
    }
    if (hasLogConfig() != other.hasLogConfig()) return false;
    if (hasLogConfig()) {
      if (!getLogConfig().equals(other.getLogConfig())) return false;
    }
    if (hasTimecodeConfig() != other.hasTimecodeConfig()) return false;
    if (hasTimecodeConfig()) {
      if (!getTimecodeConfig().equals(other.getTimecodeConfig())) return false;
    }
    if (!getEncryptionsList().equals(other.getEncryptionsList())) return false;
    if (hasInputConfig() != other.hasInputConfig()) return false;
    if (hasInputConfig()) {
      if (!getInputConfig().equals(other.getInputConfig())) return false;
    }
    if (hasRetentionConfig() != other.hasRetentionConfig()) return false;
    if (hasRetentionConfig()) {
      if (!getRetentionConfig().equals(other.getRetentionConfig())) return false;
    }
    if (!getStaticOverlaysList().equals(other.getStaticOverlaysList())) return false;
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }
<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