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

// MessageActionClassArray is adapter for slice of MessageActionClass.
type MessageActionClassArray []MessageActionClass

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AsMessageActionChatCreate returns copy with only MessageActionChatCreate constructors.
func ( MessageActionClassArray) () ( MessageActionChatCreateArray) {
	for ,  := range  {
		,  := .(*MessageActionChatCreate)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionChatEditTitle returns copy with only MessageActionChatEditTitle constructors.
func ( MessageActionClassArray) () ( MessageActionChatEditTitleArray) {
	for ,  := range  {
		,  := .(*MessageActionChatEditTitle)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionChatEditPhoto returns copy with only MessageActionChatEditPhoto constructors.
func ( MessageActionClassArray) () ( MessageActionChatEditPhotoArray) {
	for ,  := range  {
		,  := .(*MessageActionChatEditPhoto)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionChatAddUser returns copy with only MessageActionChatAddUser constructors.
func ( MessageActionClassArray) () ( MessageActionChatAddUserArray) {
	for ,  := range  {
		,  := .(*MessageActionChatAddUser)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionChatDeleteUser returns copy with only MessageActionChatDeleteUser constructors.
func ( MessageActionClassArray) () ( MessageActionChatDeleteUserArray) {
	for ,  := range  {
		,  := .(*MessageActionChatDeleteUser)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionChatJoinedByLink returns copy with only MessageActionChatJoinedByLink constructors.
func ( MessageActionClassArray) () ( MessageActionChatJoinedByLinkArray) {
	for ,  := range  {
		,  := .(*MessageActionChatJoinedByLink)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionChannelCreate returns copy with only MessageActionChannelCreate constructors.
func ( MessageActionClassArray) () ( MessageActionChannelCreateArray) {
	for ,  := range  {
		,  := .(*MessageActionChannelCreate)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionChatMigrateTo returns copy with only MessageActionChatMigrateTo constructors.
func ( MessageActionClassArray) () ( MessageActionChatMigrateToArray) {
	for ,  := range  {
		,  := .(*MessageActionChatMigrateTo)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionChannelMigrateFrom returns copy with only MessageActionChannelMigrateFrom constructors.
func ( MessageActionClassArray) () ( MessageActionChannelMigrateFromArray) {
	for ,  := range  {
		,  := .(*MessageActionChannelMigrateFrom)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionGameScore returns copy with only MessageActionGameScore constructors.
func ( MessageActionClassArray) () ( MessageActionGameScoreArray) {
	for ,  := range  {
		,  := .(*MessageActionGameScore)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionPaymentSentMe returns copy with only MessageActionPaymentSentMe constructors.
func ( MessageActionClassArray) () ( MessageActionPaymentSentMeArray) {
	for ,  := range  {
		,  := .(*MessageActionPaymentSentMe)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionPaymentSent returns copy with only MessageActionPaymentSent constructors.
func ( MessageActionClassArray) () ( MessageActionPaymentSentArray) {
	for ,  := range  {
		,  := .(*MessageActionPaymentSent)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionPhoneCall returns copy with only MessageActionPhoneCall constructors.
func ( MessageActionClassArray) () ( MessageActionPhoneCallArray) {
	for ,  := range  {
		,  := .(*MessageActionPhoneCall)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionCustomAction returns copy with only MessageActionCustomAction constructors.
func ( MessageActionClassArray) () ( MessageActionCustomActionArray) {
	for ,  := range  {
		,  := .(*MessageActionCustomAction)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionBotAllowed returns copy with only MessageActionBotAllowed constructors.
func ( MessageActionClassArray) () ( MessageActionBotAllowedArray) {
	for ,  := range  {
		,  := .(*MessageActionBotAllowed)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionSecureValuesSentMe returns copy with only MessageActionSecureValuesSentMe constructors.
func ( MessageActionClassArray) () ( MessageActionSecureValuesSentMeArray) {
	for ,  := range  {
		,  := .(*MessageActionSecureValuesSentMe)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionSecureValuesSent returns copy with only MessageActionSecureValuesSent constructors.
func ( MessageActionClassArray) () ( MessageActionSecureValuesSentArray) {
	for ,  := range  {
		,  := .(*MessageActionSecureValuesSent)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionGeoProximityReached returns copy with only MessageActionGeoProximityReached constructors.
func ( MessageActionClassArray) () ( MessageActionGeoProximityReachedArray) {
	for ,  := range  {
		,  := .(*MessageActionGeoProximityReached)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionGroupCall returns copy with only MessageActionGroupCall constructors.
func ( MessageActionClassArray) () ( MessageActionGroupCallArray) {
	for ,  := range  {
		,  := .(*MessageActionGroupCall)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionInviteToGroupCall returns copy with only MessageActionInviteToGroupCall constructors.
func ( MessageActionClassArray) () ( MessageActionInviteToGroupCallArray) {
	for ,  := range  {
		,  := .(*MessageActionInviteToGroupCall)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionSetMessagesTTL returns copy with only MessageActionSetMessagesTTL constructors.
func ( MessageActionClassArray) () ( MessageActionSetMessagesTTLArray) {
	for ,  := range  {
		,  := .(*MessageActionSetMessagesTTL)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionGroupCallScheduled returns copy with only MessageActionGroupCallScheduled constructors.
func ( MessageActionClassArray) () ( MessageActionGroupCallScheduledArray) {
	for ,  := range  {
		,  := .(*MessageActionGroupCallScheduled)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionSetChatTheme returns copy with only MessageActionSetChatTheme constructors.
func ( MessageActionClassArray) () ( MessageActionSetChatThemeArray) {
	for ,  := range  {
		,  := .(*MessageActionSetChatTheme)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionWebViewDataSentMe returns copy with only MessageActionWebViewDataSentMe constructors.
func ( MessageActionClassArray) () ( MessageActionWebViewDataSentMeArray) {
	for ,  := range  {
		,  := .(*MessageActionWebViewDataSentMe)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionWebViewDataSent returns copy with only MessageActionWebViewDataSent constructors.
func ( MessageActionClassArray) () ( MessageActionWebViewDataSentArray) {
	for ,  := range  {
		,  := .(*MessageActionWebViewDataSent)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionGiftPremium returns copy with only MessageActionGiftPremium constructors.
func ( MessageActionClassArray) () ( MessageActionGiftPremiumArray) {
	for ,  := range  {
		,  := .(*MessageActionGiftPremium)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionTopicCreate returns copy with only MessageActionTopicCreate constructors.
func ( MessageActionClassArray) () ( MessageActionTopicCreateArray) {
	for ,  := range  {
		,  := .(*MessageActionTopicCreate)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionTopicEdit returns copy with only MessageActionTopicEdit constructors.
func ( MessageActionClassArray) () ( MessageActionTopicEditArray) {
	for ,  := range  {
		,  := .(*MessageActionTopicEdit)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionSuggestProfilePhoto returns copy with only MessageActionSuggestProfilePhoto constructors.
func ( MessageActionClassArray) () ( MessageActionSuggestProfilePhotoArray) {
	for ,  := range  {
		,  := .(*MessageActionSuggestProfilePhoto)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionRequestedPeer returns copy with only MessageActionRequestedPeer constructors.
func ( MessageActionClassArray) () ( MessageActionRequestedPeerArray) {
	for ,  := range  {
		,  := .(*MessageActionRequestedPeer)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionSetChatWallPaper returns copy with only MessageActionSetChatWallPaper constructors.
func ( MessageActionClassArray) () ( MessageActionSetChatWallPaperArray) {
	for ,  := range  {
		,  := .(*MessageActionSetChatWallPaper)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionGiftCode returns copy with only MessageActionGiftCode constructors.
func ( MessageActionClassArray) () ( MessageActionGiftCodeArray) {
	for ,  := range  {
		,  := .(*MessageActionGiftCode)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageActionGiveawayResults returns copy with only MessageActionGiveawayResults constructors.
func ( MessageActionClassArray) () ( MessageActionGiveawayResultsArray) {
	for ,  := range  {
		,  := .(*MessageActionGiveawayResults)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// MessageActionChatCreateArray is adapter for slice of MessageActionChatCreate.
type MessageActionChatCreateArray []MessageActionChatCreate

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionChatEditTitleArray is adapter for slice of MessageActionChatEditTitle.
type MessageActionChatEditTitleArray []MessageActionChatEditTitle

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionChatEditPhotoArray is adapter for slice of MessageActionChatEditPhoto.
type MessageActionChatEditPhotoArray []MessageActionChatEditPhoto

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionChatAddUserArray is adapter for slice of MessageActionChatAddUser.
type MessageActionChatAddUserArray []MessageActionChatAddUser

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionChatDeleteUserArray is adapter for slice of MessageActionChatDeleteUser.
type MessageActionChatDeleteUserArray []MessageActionChatDeleteUser

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionChatJoinedByLinkArray is adapter for slice of MessageActionChatJoinedByLink.
type MessageActionChatJoinedByLinkArray []MessageActionChatJoinedByLink

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionChannelCreateArray is adapter for slice of MessageActionChannelCreate.
type MessageActionChannelCreateArray []MessageActionChannelCreate

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionChatMigrateToArray is adapter for slice of MessageActionChatMigrateTo.
type MessageActionChatMigrateToArray []MessageActionChatMigrateTo

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionChannelMigrateFromArray is adapter for slice of MessageActionChannelMigrateFrom.
type MessageActionChannelMigrateFromArray []MessageActionChannelMigrateFrom

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionGameScoreArray is adapter for slice of MessageActionGameScore.
type MessageActionGameScoreArray []MessageActionGameScore

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionPaymentSentMeArray is adapter for slice of MessageActionPaymentSentMe.
type MessageActionPaymentSentMeArray []MessageActionPaymentSentMe

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionPaymentSentArray is adapter for slice of MessageActionPaymentSent.
type MessageActionPaymentSentArray []MessageActionPaymentSent

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionPhoneCallArray is adapter for slice of MessageActionPhoneCall.
type MessageActionPhoneCallArray []MessageActionPhoneCall

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionCustomActionArray is adapter for slice of MessageActionCustomAction.
type MessageActionCustomActionArray []MessageActionCustomAction

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionBotAllowedArray is adapter for slice of MessageActionBotAllowed.
type MessageActionBotAllowedArray []MessageActionBotAllowed

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionSecureValuesSentMeArray is adapter for slice of MessageActionSecureValuesSentMe.
type MessageActionSecureValuesSentMeArray []MessageActionSecureValuesSentMe

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionSecureValuesSentArray is adapter for slice of MessageActionSecureValuesSent.
type MessageActionSecureValuesSentArray []MessageActionSecureValuesSent

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionGeoProximityReachedArray is adapter for slice of MessageActionGeoProximityReached.
type MessageActionGeoProximityReachedArray []MessageActionGeoProximityReached

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionGroupCallArray is adapter for slice of MessageActionGroupCall.
type MessageActionGroupCallArray []MessageActionGroupCall

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionInviteToGroupCallArray is adapter for slice of MessageActionInviteToGroupCall.
type MessageActionInviteToGroupCallArray []MessageActionInviteToGroupCall

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionSetMessagesTTLArray is adapter for slice of MessageActionSetMessagesTTL.
type MessageActionSetMessagesTTLArray []MessageActionSetMessagesTTL

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionGroupCallScheduledArray is adapter for slice of MessageActionGroupCallScheduled.
type MessageActionGroupCallScheduledArray []MessageActionGroupCallScheduled

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionSetChatThemeArray is adapter for slice of MessageActionSetChatTheme.
type MessageActionSetChatThemeArray []MessageActionSetChatTheme

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionWebViewDataSentMeArray is adapter for slice of MessageActionWebViewDataSentMe.
type MessageActionWebViewDataSentMeArray []MessageActionWebViewDataSentMe

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionWebViewDataSentArray is adapter for slice of MessageActionWebViewDataSent.
type MessageActionWebViewDataSentArray []MessageActionWebViewDataSent

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionGiftPremiumArray is adapter for slice of MessageActionGiftPremium.
type MessageActionGiftPremiumArray []MessageActionGiftPremium

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionTopicCreateArray is adapter for slice of MessageActionTopicCreate.
type MessageActionTopicCreateArray []MessageActionTopicCreate

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionTopicEditArray is adapter for slice of MessageActionTopicEdit.
type MessageActionTopicEditArray []MessageActionTopicEdit

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionSuggestProfilePhotoArray is adapter for slice of MessageActionSuggestProfilePhoto.
type MessageActionSuggestProfilePhotoArray []MessageActionSuggestProfilePhoto

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionRequestedPeerArray is adapter for slice of MessageActionRequestedPeer.
type MessageActionRequestedPeerArray []MessageActionRequestedPeer

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionSetChatWallPaperArray is adapter for slice of MessageActionSetChatWallPaper.
type MessageActionSetChatWallPaperArray []MessageActionSetChatWallPaper

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionGiftCodeArray is adapter for slice of MessageActionGiftCode.
type MessageActionGiftCodeArray []MessageActionGiftCode

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageActionGiveawayResultsArray is adapter for slice of MessageActionGiveawayResults.
type MessageActionGiveawayResultsArray []MessageActionGiveawayResults

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}