You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: tl_chat_gen.go
    path of file: ./repos/td/tdapi
    
    the code of the file until where you have to start completion: // Code generated by gotdgen, DO NOT EDIT.

package tdapi

import (
	"context"
	"errors"
	"fmt"
	"sort"
	"strings"

	"go.uber.org/multierr"

	"github.com/gotd/td/bin"
	"github.com/gotd/td/tdjson"
	"github.com/gotd/td/tdp"
	"github.com/gotd/td/tgerr"
)

// No-op definition for keeping imports.
var (
	_ = bin.Buffer{}
	_ = context.Background()
	_ = fmt.Stringer(nil)
	_ = strings.Builder{}
	_ = errors.Is
	_ = multierr.AppendInto
	_ = sort.Ints
	_ = tdp.Format
	_ = tgerr.Error{}
	_ = tdjson.Encoder{}
)

// Chat represents TL type `chat#57f1ba4`.
type Chat struct {
	// Chat unique identifier
	ID int64
	// Type of the chat
	Type ChatTypeClass
	// Chat title
	Title string
	// Chat photo; may be null
	Photo ChatPhotoInfo
	// Identifier of the accent color for message sender name, and backgrounds of chat photo,
	// reply header, and link preview
	AccentColorID int32
	// Identifier of a custom emoji to be shown on the reply header and link preview
	// background for messages sent by the chat; 0 if none
	BackgroundCustomEmojiID int64
	// Identifier of the profile accent color for the chat's profile; -1 if none
	ProfileAccentColorID int32
	// Identifier of a custom emoji to be shown on the background of the chat's profile; 0 if
	// none
	ProfileBackgroundCustomEmojiID int64
	// Actions that non-administrator chat members are allowed to take in 
    
func (c *Chat) Zero() bool {
	if c == nil {
		return true
	}
	if !(c.ID == 0) {
		return false
	}
	if !(c.Type == nil) {
		return false
	}
	if !(c.Title == "") {
		return false
	}
	if !(c.Photo.Zero()) {
		return false
	}
	if !(c.AccentColorID == 0) {
		return false
	}
	if !(c.BackgroundCustomEmojiID == 0) {
		return false
	}
	if !(c.ProfileAccentColorID == 0) {
		return false
	}
	if !(c.ProfileBackgroundCustomEmojiID == 0) {
		return false
	}
	if !(c.Permissions.Zero()) {
		return false
	}
	if !(c.LastMessage.Zero()) {
		return false
	}
	if !(c.Positions == nil) {
		return false
	}
	if !(c.ChatLists == nil) {
		return false
	}
	if !(c.MessageSenderID == nil) {
		return false
	}
	if !(c.BlockList == nil) {
		return false
	}
	if !(c.HasProtectedContent == false) {
		return false
	}
	if !(c.IsTranslatable == false) {
		return false
	}
	if !(c.IsMarkedAsUnread == false) {
		return false
	}
	if !(c.ViewAsTopics == false) {
		return false
	}
	if !(c.HasScheduledMessages == false) {
		return false
	}
	if !(c.CanBeDeletedOnlyForSelf == false) {
		return false
	}
	if !(c.CanBeDeletedForAllUsers == false) {
		return false
	}
	if !(c.CanBeReported == false) {
		return false
	}
	if !(c.DefaultDisableNotification == false) {
		return false
	}
	if !(c.UnreadCount == 0) {
		return false
	}
	if !(c.LastReadInboxMessageID == 0) {
		return false
	}
	if !(c.LastReadOutboxMessageID == 0) {
		return false
	}
	if !(c.UnreadMentionCount == 0) {
		return false
	}
	if !(c.UnreadReactionCount == 0) {
		return false
	}
	if !(c.NotificationSettings.Zero()) {
		return false
	}
	if !(c.AvailableReactions == nil) {
		return false
	}
	if !(c.MessageAutoDeleteTime == 0) {
		return false
	}
	if !(c.EmojiStatus.Zero()) {
		return false
	}
	if !(c.Background.Zero()) {
		return false
	}
	if !(c.ThemeName == "") {
		return false
	}
	if !(c.ActionBar == nil) {
		return false
	}
	if !(c.VideoChat.Zero()) {
		return false
	}
	if !(c.PendingJoinRequests.Zero()) {
		return false
	}
	if !(c.ReplyMarkupMessageID == 0) {
		return false
	}
	if !(c.DraftMessage.Zero()) {
		return false
	}
	if !(c.ClientData == "") {
		return false
	}

	return true
}