//go:build !no_gotd_slices
// +build !no_gotd_slices

// Code generated by gotdgen, DO NOT EDIT.

package tg

import (
	
	
	
	
	

	

	
	
	
	
)

// 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{}
)

// ChatClassArray is adapter for slice of ChatClass.
type ChatClassArray []ChatClass

// Sort sorts slice of ChatClass.
func ( ChatClassArray) ( func(,  ChatClass) bool) ChatClassArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChatClass.
func ( ChatClassArray) ( func(,  ChatClass) bool) ChatClassArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChatClass.
func ( ChatClassArray) ( func( ChatClass) bool) ChatClassArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChatClassArray) () ( ChatClass,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChatClassArray) () ( ChatClass,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChatClassArray) () ( ChatClass,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChatClass
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChatClassArray) () ( ChatClass,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// SortByID sorts slice of ChatClass by ID.
func ( ChatClassArray) () ChatClassArray {
	return .Sort(func(,  ChatClass) bool {
		return .GetID() < .GetID()
	})
}

// SortStableByID sorts slice of ChatClass by ID.
func ( ChatClassArray) () ChatClassArray {
	return .SortStable(func(,  ChatClass) bool {
		return .GetID() < .GetID()
	})
}

// FillChatEmptyMap fills only ChatEmpty constructors to given map.
func ( ChatClassArray) ( map[int64]*ChatEmpty) {
	for ,  := range  {
		,  := .(*ChatEmpty)
		if ! {
			continue
		}
		[.GetID()] = 
	}
}

// ChatEmptyToMap collects only ChatEmpty constructors to map.
func ( ChatClassArray) () map[int64]*ChatEmpty {
	 := make(map[int64]*ChatEmpty, len())
	.FillChatEmptyMap()
	return 
}

// AsChatEmpty returns copy with only ChatEmpty constructors.
func ( ChatClassArray) () ( ChatEmptyArray) {
	for ,  := range  {
		,  := .(*ChatEmpty)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// FillChatMap fills only Chat constructors to given map.
func ( ChatClassArray) ( map[int64]*Chat) {
	for ,  := range  {
		,  := .(*Chat)
		if ! {
			continue
		}
		[.GetID()] = 
	}
}

// ChatToMap collects only Chat constructors to map.
func ( ChatClassArray) () map[int64]*Chat {
	 := make(map[int64]*Chat, len())
	.FillChatMap()
	return 
}

// AsChat returns copy with only Chat constructors.
func ( ChatClassArray) () ( ChatArray) {
	for ,  := range  {
		,  := .(*Chat)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// FillChatForbiddenMap fills only ChatForbidden constructors to given map.
func ( ChatClassArray) ( map[int64]*ChatForbidden) {
	for ,  := range  {
		,  := .(*ChatForbidden)
		if ! {
			continue
		}
		[.GetID()] = 
	}
}

// ChatForbiddenToMap collects only ChatForbidden constructors to map.
func ( ChatClassArray) () map[int64]*ChatForbidden {
	 := make(map[int64]*ChatForbidden, len())
	.FillChatForbiddenMap()
	return 
}

// AsChatForbidden returns copy with only ChatForbidden constructors.
func ( ChatClassArray) () ( ChatForbiddenArray) {
	for ,  := range  {
		,  := .(*ChatForbidden)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// FillChannelMap fills only Channel constructors to given map.
func ( ChatClassArray) ( map[int64]*Channel) {
	for ,  := range  {
		,  := .(*Channel)
		if ! {
			continue
		}
		[.GetID()] = 
	}
}

// ChannelToMap collects only Channel constructors to map.
func ( ChatClassArray) () map[int64]*Channel {
	 := make(map[int64]*Channel, len())
	.FillChannelMap()
	return 
}

// AsChannel returns copy with only Channel constructors.
func ( ChatClassArray) () ( ChannelArray) {
	for ,  := range  {
		,  := .(*Channel)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// FillChannelForbiddenMap fills only ChannelForbidden constructors to given map.
func ( ChatClassArray) ( map[int64]*ChannelForbidden) {
	for ,  := range  {
		,  := .(*ChannelForbidden)
		if ! {
			continue
		}
		[.GetID()] = 
	}
}

// ChannelForbiddenToMap collects only ChannelForbidden constructors to map.
func ( ChatClassArray) () map[int64]*ChannelForbidden {
	 := make(map[int64]*ChannelForbidden, len())
	.FillChannelForbiddenMap()
	return 
}

// AsChannelForbidden returns copy with only ChannelForbidden constructors.
func ( ChatClassArray) () ( ChannelForbiddenArray) {
	for ,  := range  {
		,  := .(*ChannelForbidden)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// FillNotEmptyMap fills only NotEmpty constructors to given map.
func ( ChatClassArray) ( map[int64]NotEmptyChat) {
	for ,  := range  {
		,  := .AsNotEmpty()
		if ! {
			continue
		}
		[.GetID()] = 
	}
}

// NotEmptyToMap collects only NotEmpty constructors to map.
func ( ChatClassArray) () map[int64]NotEmptyChat {
	 := make(map[int64]NotEmptyChat, len())
	.FillNotEmptyMap()
	return 
}

// AppendOnlyNotEmpty appends only NotEmpty constructors to
// given slice.
func ( ChatClassArray) ( []NotEmptyChat) []NotEmptyChat {
	for ,  := range  {
		,  := .AsNotEmpty()
		if ! {
			continue
		}
		 = append(, )
	}

	return 
}

// AsNotEmpty returns copy with only NotEmpty constructors.
func ( ChatClassArray) () ( []NotEmptyChat) {
	return .AppendOnlyNotEmpty()
}

// FirstAsNotEmpty returns first element of slice (if exists).
func ( ChatClassArray) () ( NotEmptyChat,  bool) {
	,  := .First()
	if ! {
		return
	}
	return .AsNotEmpty()
}

// LastAsNotEmpty returns last element of slice (if exists).
func ( ChatClassArray) () ( NotEmptyChat,  bool) {
	,  := .Last()
	if ! {
		return
	}
	return .AsNotEmpty()
}

// PopFirstAsNotEmpty returns element of slice (if exists).
func ( *ChatClassArray) () ( NotEmptyChat,  bool) {
	,  := .PopFirst()
	if ! {
		return
	}
	return .AsNotEmpty()
}

// PopAsNotEmpty returns element of slice (if exists).
func ( *ChatClassArray) () ( NotEmptyChat,  bool) {
	,  := .Pop()
	if ! {
		return
	}
	return .AsNotEmpty()
}

// FillNotForbiddenMap fills only NotForbidden constructors to given map.
func ( ChatClassArray) ( map[int64]NotForbiddenChat) {
	for ,  := range  {
		,  := .AsNotForbidden()
		if ! {
			continue
		}
		[.GetID()] = 
	}
}

// NotForbiddenToMap collects only NotForbidden constructors to map.
func ( ChatClassArray) () map[int64]NotForbiddenChat {
	 := make(map[int64]NotForbiddenChat, len())
	.FillNotForbiddenMap()
	return 
}

// AppendOnlyNotForbidden appends only NotForbidden constructors to
// given slice.
func ( ChatClassArray) ( []NotForbiddenChat) []NotForbiddenChat {
	for ,  := range  {
		,  := .AsNotForbidden()
		if ! {
			continue
		}
		 = append(, )
	}

	return 
}

// AsNotForbidden returns copy with only NotForbidden constructors.
func ( ChatClassArray) () ( []NotForbiddenChat) {
	return .AppendOnlyNotForbidden()
}

// FirstAsNotForbidden returns first element of slice (if exists).
func ( ChatClassArray) () ( NotForbiddenChat,  bool) {
	,  := .First()
	if ! {
		return
	}
	return .AsNotForbidden()
}

// LastAsNotForbidden returns last element of slice (if exists).
func ( ChatClassArray) () ( NotForbiddenChat,  bool) {
	,  := .Last()
	if ! {
		return
	}
	return .AsNotForbidden()
}

// PopFirstAsNotForbidden returns element of slice (if exists).
func ( *ChatClassArray) () ( NotForbiddenChat,  bool) {
	,  := .PopFirst()
	if ! {
		return
	}
	return .AsNotForbidden()
}

// PopAsNotForbidden returns element of slice (if exists).
func ( *ChatClassArray) () ( NotForbiddenChat,  bool) {
	,  := .Pop()
	if ! {
		return
	}
	return .AsNotForbidden()
}

// FillFullMap fills only Full constructors to given map.
func ( ChatClassArray) ( map[int64]FullChat) {
	for ,  := range  {
		,  := .AsFull()
		if ! {
			continue
		}
		[.GetID()] = 
	}
}

// FullToMap collects only Full constructors to map.
func ( ChatClassArray) () map[int64]FullChat {
	 := make(map[int64]FullChat, len())
	.FillFullMap()
	return 
}

// AppendOnlyFull appends only Full constructors to
// given slice.
func ( ChatClassArray) ( []FullChat) []FullChat {
	for ,  := range  {
		,  := .AsFull()
		if ! {
			continue
		}
		 = append(, )
	}

	return 
}

// AsFull returns copy with only Full constructors.
func ( ChatClassArray) () ( []FullChat) {
	return .AppendOnlyFull()
}

// FirstAsFull returns first element of slice (if exists).
func ( ChatClassArray) () ( FullChat,  bool) {
	,  := .First()
	if ! {
		return
	}
	return .AsFull()
}

// LastAsFull returns last element of slice (if exists).
func ( ChatClassArray) () ( FullChat,  bool) {
	,  := .Last()
	if ! {
		return
	}
	return .AsFull()
}

// PopFirstAsFull returns element of slice (if exists).
func ( *ChatClassArray) () ( FullChat,  bool) {
	,  := .PopFirst()
	if ! {
		return
	}
	return .AsFull()
}

// PopAsFull returns element of slice (if exists).
func ( *ChatClassArray) () ( FullChat,  bool) {
	,  := .Pop()
	if ! {
		return
	}
	return .AsFull()
}

// ChatEmptyArray is adapter for slice of ChatEmpty.
type ChatEmptyArray []ChatEmpty

// Sort sorts slice of ChatEmpty.
func ( ChatEmptyArray) ( func(,  ChatEmpty) bool) ChatEmptyArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChatEmpty.
func ( ChatEmptyArray) ( func(,  ChatEmpty) bool) ChatEmptyArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChatEmpty.
func ( ChatEmptyArray) ( func( ChatEmpty) bool) ChatEmptyArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChatEmptyArray) () ( ChatEmpty,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChatEmptyArray) () ( ChatEmpty,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChatEmptyArray) () ( ChatEmpty,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChatEmpty
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChatEmptyArray) () ( ChatEmpty,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// SortByID sorts slice of ChatEmpty by ID.
func ( ChatEmptyArray) () ChatEmptyArray {
	return .Sort(func(,  ChatEmpty) bool {
		return .GetID() < .GetID()
	})
}

// SortStableByID sorts slice of ChatEmpty by ID.
func ( ChatEmptyArray) () ChatEmptyArray {
	return .SortStable(func(,  ChatEmpty) bool {
		return .GetID() < .GetID()
	})
}

// FillMap fills constructors to given map.
func ( ChatEmptyArray) ( map[int64]ChatEmpty) {
	for ,  := range  {
		[.GetID()] = 
	}
}

// ToMap collects constructors to map.
func ( ChatEmptyArray) () map[int64]ChatEmpty {
	 := make(map[int64]ChatEmpty, len())
	.FillMap()
	return 
}

// ChatArray is adapter for slice of Chat.
type ChatArray []Chat

// Sort sorts slice of Chat.
func ( ChatArray) ( func(,  Chat) bool) ChatArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of Chat.
func ( ChatArray) ( func(,  Chat) bool) ChatArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of Chat.
func ( ChatArray) ( func( Chat) bool) ChatArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChatArray) () ( Chat,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChatArray) () ( Chat,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChatArray) () ( Chat,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  Chat
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChatArray) () ( Chat,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// SortByID sorts slice of Chat by ID.
func ( ChatArray) () ChatArray {
	return .Sort(func(,  Chat) bool {
		return .GetID() < .GetID()
	})
}

// SortStableByID sorts slice of Chat by ID.
func ( ChatArray) () ChatArray {
	return .SortStable(func(,  Chat) bool {
		return .GetID() < .GetID()
	})
}

// SortByDate sorts slice of Chat by Date.
func ( ChatArray) () ChatArray {
	return .Sort(func(,  Chat) bool {
		return .GetDate() < .GetDate()
	})
}

// SortStableByDate sorts slice of Chat by Date.
func ( ChatArray) () ChatArray {
	return .SortStable(func(,  Chat) bool {
		return .GetDate() < .GetDate()
	})
}

// FillMap fills constructors to given map.
func ( ChatArray) ( map[int64]Chat) {
	for ,  := range  {
		[.GetID()] = 
	}
}

// ToMap collects constructors to map.
func ( ChatArray) () map[int64]Chat {
	 := make(map[int64]Chat, len())
	.FillMap()
	return 
}

// ChatForbiddenArray is adapter for slice of ChatForbidden.
type ChatForbiddenArray []ChatForbidden

// Sort sorts slice of ChatForbidden.
func ( ChatForbiddenArray) ( func(,  ChatForbidden) bool) ChatForbiddenArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChatForbidden.
func ( ChatForbiddenArray) ( func(,  ChatForbidden) bool) ChatForbiddenArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChatForbidden.
func ( ChatForbiddenArray) ( func( ChatForbidden) bool) ChatForbiddenArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChatForbiddenArray) () ( ChatForbidden,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChatForbiddenArray) () ( ChatForbidden,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChatForbiddenArray) () ( ChatForbidden,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChatForbidden
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChatForbiddenArray) () ( ChatForbidden,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// SortByID sorts slice of ChatForbidden by ID.
func ( ChatForbiddenArray) () ChatForbiddenArray {
	return .Sort(func(,  ChatForbidden) bool {
		return .GetID() < .GetID()
	})
}

// SortStableByID sorts slice of ChatForbidden by ID.
func ( ChatForbiddenArray) () ChatForbiddenArray {
	return .SortStable(func(,  ChatForbidden) bool {
		return .GetID() < .GetID()
	})
}

// FillMap fills constructors to given map.
func ( ChatForbiddenArray) ( map[int64]ChatForbidden) {
	for ,  := range  {
		[.GetID()] = 
	}
}

// ToMap collects constructors to map.
func ( ChatForbiddenArray) () map[int64]ChatForbidden {
	 := make(map[int64]ChatForbidden, len())
	.FillMap()
	return 
}

// ChannelArray is adapter for slice of Channel.
type ChannelArray []Channel

// Sort sorts slice of Channel.
func ( ChannelArray) ( func(,  Channel) bool) ChannelArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of Channel.
func ( ChannelArray) ( func(,  Channel) bool) ChannelArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of Channel.
func ( ChannelArray) ( func( Channel) bool) ChannelArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelArray) () ( Channel,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelArray) () ( Channel,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelArray) () ( Channel,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  Channel
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelArray) () ( Channel,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// SortByID sorts slice of Channel by ID.
func ( ChannelArray) () ChannelArray {
	return .Sort(func(,  Channel) bool {
		return .GetID() < .GetID()
	})
}

// SortStableByID sorts slice of Channel by ID.
func ( ChannelArray) () ChannelArray {
	return .SortStable(func(,  Channel) bool {
		return .GetID() < .GetID()
	})
}

// SortByDate sorts slice of Channel by Date.
func ( ChannelArray) () ChannelArray {
	return .Sort(func(,  Channel) bool {
		return .GetDate() < .GetDate()
	})
}

// SortStableByDate sorts slice of Channel by Date.
func ( ChannelArray) () ChannelArray {
	return .SortStable(func(,  Channel) bool {
		return .GetDate() < .GetDate()
	})
}

// FillMap fills constructors to given map.
func ( ChannelArray) ( map[int64]Channel) {
	for ,  := range  {
		[.GetID()] = 
	}
}

// ToMap collects constructors to map.
func ( ChannelArray) () map[int64]Channel {
	 := make(map[int64]Channel, len())
	.FillMap()
	return 
}

// ChannelForbiddenArray is adapter for slice of ChannelForbidden.
type ChannelForbiddenArray []ChannelForbidden

// Sort sorts slice of ChannelForbidden.
func ( ChannelForbiddenArray) ( func(,  ChannelForbidden) bool) ChannelForbiddenArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of ChannelForbidden.
func ( ChannelForbiddenArray) ( func(,  ChannelForbidden) bool) ChannelForbiddenArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of ChannelForbidden.
func ( ChannelForbiddenArray) ( func( ChannelForbidden) bool) ChannelForbiddenArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( ChannelForbiddenArray) () ( ChannelForbidden,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( ChannelForbiddenArray) () ( ChannelForbidden,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *ChannelForbiddenArray) () ( ChannelForbidden,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  ChannelForbidden
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *ChannelForbiddenArray) () ( ChannelForbidden,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// SortByID sorts slice of ChannelForbidden by ID.
func ( ChannelForbiddenArray) () ChannelForbiddenArray {
	return .Sort(func(,  ChannelForbidden) bool {
		return .GetID() < .GetID()
	})
}

// SortStableByID sorts slice of ChannelForbidden by ID.
func ( ChannelForbiddenArray) () ChannelForbiddenArray {
	return .SortStable(func(,  ChannelForbidden) bool {
		return .GetID() < .GetID()
	})
}

// FillMap fills constructors to given map.
func ( ChannelForbiddenArray) ( map[int64]ChannelForbidden) {
	for ,  := range  {
		[.GetID()] = 
	}
}

// ToMap collects constructors to map.
func ( ChannelForbiddenArray) () map[int64]ChannelForbidden {
	 := make(map[int64]ChannelForbidden, len())
	.FillMap()
	return 
}