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

// UpdateClassArray is adapter for slice of UpdateClass.
type UpdateClassArray []UpdateClass

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AsUpdateNewMessage returns copy with only UpdateNewMessage constructors.
func ( UpdateClassArray) () ( UpdateNewMessageArray) {
	for ,  := range  {
		,  := .(*UpdateNewMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateMessageID returns copy with only UpdateMessageID constructors.
func ( UpdateClassArray) () ( UpdateMessageIDArray) {
	for ,  := range  {
		,  := .(*UpdateMessageID)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateDeleteMessages returns copy with only UpdateDeleteMessages constructors.
func ( UpdateClassArray) () ( UpdateDeleteMessagesArray) {
	for ,  := range  {
		,  := .(*UpdateDeleteMessages)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateUserTyping returns copy with only UpdateUserTyping constructors.
func ( UpdateClassArray) () ( UpdateUserTypingArray) {
	for ,  := range  {
		,  := .(*UpdateUserTyping)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChatUserTyping returns copy with only UpdateChatUserTyping constructors.
func ( UpdateClassArray) () ( UpdateChatUserTypingArray) {
	for ,  := range  {
		,  := .(*UpdateChatUserTyping)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChatParticipants returns copy with only UpdateChatParticipants constructors.
func ( UpdateClassArray) () ( UpdateChatParticipantsArray) {
	for ,  := range  {
		,  := .(*UpdateChatParticipants)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateUserStatus returns copy with only UpdateUserStatus constructors.
func ( UpdateClassArray) () ( UpdateUserStatusArray) {
	for ,  := range  {
		,  := .(*UpdateUserStatus)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateUserName returns copy with only UpdateUserName constructors.
func ( UpdateClassArray) () ( UpdateUserNameArray) {
	for ,  := range  {
		,  := .(*UpdateUserName)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateNewAuthorization returns copy with only UpdateNewAuthorization constructors.
func ( UpdateClassArray) () ( UpdateNewAuthorizationArray) {
	for ,  := range  {
		,  := .(*UpdateNewAuthorization)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateNewEncryptedMessage returns copy with only UpdateNewEncryptedMessage constructors.
func ( UpdateClassArray) () ( UpdateNewEncryptedMessageArray) {
	for ,  := range  {
		,  := .(*UpdateNewEncryptedMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateEncryptedChatTyping returns copy with only UpdateEncryptedChatTyping constructors.
func ( UpdateClassArray) () ( UpdateEncryptedChatTypingArray) {
	for ,  := range  {
		,  := .(*UpdateEncryptedChatTyping)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateEncryption returns copy with only UpdateEncryption constructors.
func ( UpdateClassArray) () ( UpdateEncryptionArray) {
	for ,  := range  {
		,  := .(*UpdateEncryption)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateEncryptedMessagesRead returns copy with only UpdateEncryptedMessagesRead constructors.
func ( UpdateClassArray) () ( UpdateEncryptedMessagesReadArray) {
	for ,  := range  {
		,  := .(*UpdateEncryptedMessagesRead)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChatParticipantAdd returns copy with only UpdateChatParticipantAdd constructors.
func ( UpdateClassArray) () ( UpdateChatParticipantAddArray) {
	for ,  := range  {
		,  := .(*UpdateChatParticipantAdd)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChatParticipantDelete returns copy with only UpdateChatParticipantDelete constructors.
func ( UpdateClassArray) () ( UpdateChatParticipantDeleteArray) {
	for ,  := range  {
		,  := .(*UpdateChatParticipantDelete)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateDCOptions returns copy with only UpdateDCOptions constructors.
func ( UpdateClassArray) () ( UpdateDCOptionsArray) {
	for ,  := range  {
		,  := .(*UpdateDCOptions)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateNotifySettings returns copy with only UpdateNotifySettings constructors.
func ( UpdateClassArray) () ( UpdateNotifySettingsArray) {
	for ,  := range  {
		,  := .(*UpdateNotifySettings)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateServiceNotification returns copy with only UpdateServiceNotification constructors.
func ( UpdateClassArray) () ( UpdateServiceNotificationArray) {
	for ,  := range  {
		,  := .(*UpdateServiceNotification)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePrivacy returns copy with only UpdatePrivacy constructors.
func ( UpdateClassArray) () ( UpdatePrivacyArray) {
	for ,  := range  {
		,  := .(*UpdatePrivacy)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateUserPhone returns copy with only UpdateUserPhone constructors.
func ( UpdateClassArray) () ( UpdateUserPhoneArray) {
	for ,  := range  {
		,  := .(*UpdateUserPhone)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateReadHistoryInbox returns copy with only UpdateReadHistoryInbox constructors.
func ( UpdateClassArray) () ( UpdateReadHistoryInboxArray) {
	for ,  := range  {
		,  := .(*UpdateReadHistoryInbox)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateReadHistoryOutbox returns copy with only UpdateReadHistoryOutbox constructors.
func ( UpdateClassArray) () ( UpdateReadHistoryOutboxArray) {
	for ,  := range  {
		,  := .(*UpdateReadHistoryOutbox)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateWebPage returns copy with only UpdateWebPage constructors.
func ( UpdateClassArray) () ( UpdateWebPageArray) {
	for ,  := range  {
		,  := .(*UpdateWebPage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateReadMessagesContents returns copy with only UpdateReadMessagesContents constructors.
func ( UpdateClassArray) () ( UpdateReadMessagesContentsArray) {
	for ,  := range  {
		,  := .(*UpdateReadMessagesContents)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelTooLong returns copy with only UpdateChannelTooLong constructors.
func ( UpdateClassArray) () ( UpdateChannelTooLongArray) {
	for ,  := range  {
		,  := .(*UpdateChannelTooLong)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannel returns copy with only UpdateChannel constructors.
func ( UpdateClassArray) () ( UpdateChannelArray) {
	for ,  := range  {
		,  := .(*UpdateChannel)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateNewChannelMessage returns copy with only UpdateNewChannelMessage constructors.
func ( UpdateClassArray) () ( UpdateNewChannelMessageArray) {
	for ,  := range  {
		,  := .(*UpdateNewChannelMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateReadChannelInbox returns copy with only UpdateReadChannelInbox constructors.
func ( UpdateClassArray) () ( UpdateReadChannelInboxArray) {
	for ,  := range  {
		,  := .(*UpdateReadChannelInbox)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateDeleteChannelMessages returns copy with only UpdateDeleteChannelMessages constructors.
func ( UpdateClassArray) () ( UpdateDeleteChannelMessagesArray) {
	for ,  := range  {
		,  := .(*UpdateDeleteChannelMessages)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelMessageViews returns copy with only UpdateChannelMessageViews constructors.
func ( UpdateClassArray) () ( UpdateChannelMessageViewsArray) {
	for ,  := range  {
		,  := .(*UpdateChannelMessageViews)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChatParticipantAdmin returns copy with only UpdateChatParticipantAdmin constructors.
func ( UpdateClassArray) () ( UpdateChatParticipantAdminArray) {
	for ,  := range  {
		,  := .(*UpdateChatParticipantAdmin)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateNewStickerSet returns copy with only UpdateNewStickerSet constructors.
func ( UpdateClassArray) () ( UpdateNewStickerSetArray) {
	for ,  := range  {
		,  := .(*UpdateNewStickerSet)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateStickerSetsOrder returns copy with only UpdateStickerSetsOrder constructors.
func ( UpdateClassArray) () ( UpdateStickerSetsOrderArray) {
	for ,  := range  {
		,  := .(*UpdateStickerSetsOrder)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateStickerSets returns copy with only UpdateStickerSets constructors.
func ( UpdateClassArray) () ( UpdateStickerSetsArray) {
	for ,  := range  {
		,  := .(*UpdateStickerSets)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotInlineQuery returns copy with only UpdateBotInlineQuery constructors.
func ( UpdateClassArray) () ( UpdateBotInlineQueryArray) {
	for ,  := range  {
		,  := .(*UpdateBotInlineQuery)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotInlineSend returns copy with only UpdateBotInlineSend constructors.
func ( UpdateClassArray) () ( UpdateBotInlineSendArray) {
	for ,  := range  {
		,  := .(*UpdateBotInlineSend)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateEditChannelMessage returns copy with only UpdateEditChannelMessage constructors.
func ( UpdateClassArray) () ( UpdateEditChannelMessageArray) {
	for ,  := range  {
		,  := .(*UpdateEditChannelMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotCallbackQuery returns copy with only UpdateBotCallbackQuery constructors.
func ( UpdateClassArray) () ( UpdateBotCallbackQueryArray) {
	for ,  := range  {
		,  := .(*UpdateBotCallbackQuery)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateEditMessage returns copy with only UpdateEditMessage constructors.
func ( UpdateClassArray) () ( UpdateEditMessageArray) {
	for ,  := range  {
		,  := .(*UpdateEditMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateInlineBotCallbackQuery returns copy with only UpdateInlineBotCallbackQuery constructors.
func ( UpdateClassArray) () ( UpdateInlineBotCallbackQueryArray) {
	for ,  := range  {
		,  := .(*UpdateInlineBotCallbackQuery)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateReadChannelOutbox returns copy with only UpdateReadChannelOutbox constructors.
func ( UpdateClassArray) () ( UpdateReadChannelOutboxArray) {
	for ,  := range  {
		,  := .(*UpdateReadChannelOutbox)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateDraftMessage returns copy with only UpdateDraftMessage constructors.
func ( UpdateClassArray) () ( UpdateDraftMessageArray) {
	for ,  := range  {
		,  := .(*UpdateDraftMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelWebPage returns copy with only UpdateChannelWebPage constructors.
func ( UpdateClassArray) () ( UpdateChannelWebPageArray) {
	for ,  := range  {
		,  := .(*UpdateChannelWebPage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateDialogPinned returns copy with only UpdateDialogPinned constructors.
func ( UpdateClassArray) () ( UpdateDialogPinnedArray) {
	for ,  := range  {
		,  := .(*UpdateDialogPinned)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePinnedDialogs returns copy with only UpdatePinnedDialogs constructors.
func ( UpdateClassArray) () ( UpdatePinnedDialogsArray) {
	for ,  := range  {
		,  := .(*UpdatePinnedDialogs)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotWebhookJSON returns copy with only UpdateBotWebhookJSON constructors.
func ( UpdateClassArray) () ( UpdateBotWebhookJSONArray) {
	for ,  := range  {
		,  := .(*UpdateBotWebhookJSON)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotWebhookJSONQuery returns copy with only UpdateBotWebhookJSONQuery constructors.
func ( UpdateClassArray) () ( UpdateBotWebhookJSONQueryArray) {
	for ,  := range  {
		,  := .(*UpdateBotWebhookJSONQuery)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotShippingQuery returns copy with only UpdateBotShippingQuery constructors.
func ( UpdateClassArray) () ( UpdateBotShippingQueryArray) {
	for ,  := range  {
		,  := .(*UpdateBotShippingQuery)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotPrecheckoutQuery returns copy with only UpdateBotPrecheckoutQuery constructors.
func ( UpdateClassArray) () ( UpdateBotPrecheckoutQueryArray) {
	for ,  := range  {
		,  := .(*UpdateBotPrecheckoutQuery)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePhoneCall returns copy with only UpdatePhoneCall constructors.
func ( UpdateClassArray) () ( UpdatePhoneCallArray) {
	for ,  := range  {
		,  := .(*UpdatePhoneCall)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateLangPackTooLong returns copy with only UpdateLangPackTooLong constructors.
func ( UpdateClassArray) () ( UpdateLangPackTooLongArray) {
	for ,  := range  {
		,  := .(*UpdateLangPackTooLong)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateLangPack returns copy with only UpdateLangPack constructors.
func ( UpdateClassArray) () ( UpdateLangPackArray) {
	for ,  := range  {
		,  := .(*UpdateLangPack)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelReadMessagesContents returns copy with only UpdateChannelReadMessagesContents constructors.
func ( UpdateClassArray) () ( UpdateChannelReadMessagesContentsArray) {
	for ,  := range  {
		,  := .(*UpdateChannelReadMessagesContents)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelAvailableMessages returns copy with only UpdateChannelAvailableMessages constructors.
func ( UpdateClassArray) () ( UpdateChannelAvailableMessagesArray) {
	for ,  := range  {
		,  := .(*UpdateChannelAvailableMessages)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateDialogUnreadMark returns copy with only UpdateDialogUnreadMark constructors.
func ( UpdateClassArray) () ( UpdateDialogUnreadMarkArray) {
	for ,  := range  {
		,  := .(*UpdateDialogUnreadMark)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateMessagePoll returns copy with only UpdateMessagePoll constructors.
func ( UpdateClassArray) () ( UpdateMessagePollArray) {
	for ,  := range  {
		,  := .(*UpdateMessagePoll)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChatDefaultBannedRights returns copy with only UpdateChatDefaultBannedRights constructors.
func ( UpdateClassArray) () ( UpdateChatDefaultBannedRightsArray) {
	for ,  := range  {
		,  := .(*UpdateChatDefaultBannedRights)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateFolderPeers returns copy with only UpdateFolderPeers constructors.
func ( UpdateClassArray) () ( UpdateFolderPeersArray) {
	for ,  := range  {
		,  := .(*UpdateFolderPeers)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePeerSettings returns copy with only UpdatePeerSettings constructors.
func ( UpdateClassArray) () ( UpdatePeerSettingsArray) {
	for ,  := range  {
		,  := .(*UpdatePeerSettings)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePeerLocated returns copy with only UpdatePeerLocated constructors.
func ( UpdateClassArray) () ( UpdatePeerLocatedArray) {
	for ,  := range  {
		,  := .(*UpdatePeerLocated)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateNewScheduledMessage returns copy with only UpdateNewScheduledMessage constructors.
func ( UpdateClassArray) () ( UpdateNewScheduledMessageArray) {
	for ,  := range  {
		,  := .(*UpdateNewScheduledMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateDeleteScheduledMessages returns copy with only UpdateDeleteScheduledMessages constructors.
func ( UpdateClassArray) () ( UpdateDeleteScheduledMessagesArray) {
	for ,  := range  {
		,  := .(*UpdateDeleteScheduledMessages)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateTheme returns copy with only UpdateTheme constructors.
func ( UpdateClassArray) () ( UpdateThemeArray) {
	for ,  := range  {
		,  := .(*UpdateTheme)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateGeoLiveViewed returns copy with only UpdateGeoLiveViewed constructors.
func ( UpdateClassArray) () ( UpdateGeoLiveViewedArray) {
	for ,  := range  {
		,  := .(*UpdateGeoLiveViewed)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateMessagePollVote returns copy with only UpdateMessagePollVote constructors.
func ( UpdateClassArray) () ( UpdateMessagePollVoteArray) {
	for ,  := range  {
		,  := .(*UpdateMessagePollVote)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateDialogFilter returns copy with only UpdateDialogFilter constructors.
func ( UpdateClassArray) () ( UpdateDialogFilterArray) {
	for ,  := range  {
		,  := .(*UpdateDialogFilter)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateDialogFilterOrder returns copy with only UpdateDialogFilterOrder constructors.
func ( UpdateClassArray) () ( UpdateDialogFilterOrderArray) {
	for ,  := range  {
		,  := .(*UpdateDialogFilterOrder)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePhoneCallSignalingData returns copy with only UpdatePhoneCallSignalingData constructors.
func ( UpdateClassArray) () ( UpdatePhoneCallSignalingDataArray) {
	for ,  := range  {
		,  := .(*UpdatePhoneCallSignalingData)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelMessageForwards returns copy with only UpdateChannelMessageForwards constructors.
func ( UpdateClassArray) () ( UpdateChannelMessageForwardsArray) {
	for ,  := range  {
		,  := .(*UpdateChannelMessageForwards)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateReadChannelDiscussionInbox returns copy with only UpdateReadChannelDiscussionInbox constructors.
func ( UpdateClassArray) () ( UpdateReadChannelDiscussionInboxArray) {
	for ,  := range  {
		,  := .(*UpdateReadChannelDiscussionInbox)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateReadChannelDiscussionOutbox returns copy with only UpdateReadChannelDiscussionOutbox constructors.
func ( UpdateClassArray) () ( UpdateReadChannelDiscussionOutboxArray) {
	for ,  := range  {
		,  := .(*UpdateReadChannelDiscussionOutbox)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePeerBlocked returns copy with only UpdatePeerBlocked constructors.
func ( UpdateClassArray) () ( UpdatePeerBlockedArray) {
	for ,  := range  {
		,  := .(*UpdatePeerBlocked)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelUserTyping returns copy with only UpdateChannelUserTyping constructors.
func ( UpdateClassArray) () ( UpdateChannelUserTypingArray) {
	for ,  := range  {
		,  := .(*UpdateChannelUserTyping)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePinnedMessages returns copy with only UpdatePinnedMessages constructors.
func ( UpdateClassArray) () ( UpdatePinnedMessagesArray) {
	for ,  := range  {
		,  := .(*UpdatePinnedMessages)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePinnedChannelMessages returns copy with only UpdatePinnedChannelMessages constructors.
func ( UpdateClassArray) () ( UpdatePinnedChannelMessagesArray) {
	for ,  := range  {
		,  := .(*UpdatePinnedChannelMessages)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChat returns copy with only UpdateChat constructors.
func ( UpdateClassArray) () ( UpdateChatArray) {
	for ,  := range  {
		,  := .(*UpdateChat)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateGroupCallParticipants returns copy with only UpdateGroupCallParticipants constructors.
func ( UpdateClassArray) () ( UpdateGroupCallParticipantsArray) {
	for ,  := range  {
		,  := .(*UpdateGroupCallParticipants)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateGroupCall returns copy with only UpdateGroupCall constructors.
func ( UpdateClassArray) () ( UpdateGroupCallArray) {
	for ,  := range  {
		,  := .(*UpdateGroupCall)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePeerHistoryTTL returns copy with only UpdatePeerHistoryTTL constructors.
func ( UpdateClassArray) () ( UpdatePeerHistoryTTLArray) {
	for ,  := range  {
		,  := .(*UpdatePeerHistoryTTL)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChatParticipant returns copy with only UpdateChatParticipant constructors.
func ( UpdateClassArray) () ( UpdateChatParticipantArray) {
	for ,  := range  {
		,  := .(*UpdateChatParticipant)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelParticipant returns copy with only UpdateChannelParticipant constructors.
func ( UpdateClassArray) () ( UpdateChannelParticipantArray) {
	for ,  := range  {
		,  := .(*UpdateChannelParticipant)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotStopped returns copy with only UpdateBotStopped constructors.
func ( UpdateClassArray) () ( UpdateBotStoppedArray) {
	for ,  := range  {
		,  := .(*UpdateBotStopped)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateGroupCallConnection returns copy with only UpdateGroupCallConnection constructors.
func ( UpdateClassArray) () ( UpdateGroupCallConnectionArray) {
	for ,  := range  {
		,  := .(*UpdateGroupCallConnection)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotCommands returns copy with only UpdateBotCommands constructors.
func ( UpdateClassArray) () ( UpdateBotCommandsArray) {
	for ,  := range  {
		,  := .(*UpdateBotCommands)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePendingJoinRequests returns copy with only UpdatePendingJoinRequests constructors.
func ( UpdateClassArray) () ( UpdatePendingJoinRequestsArray) {
	for ,  := range  {
		,  := .(*UpdatePendingJoinRequests)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotChatInviteRequester returns copy with only UpdateBotChatInviteRequester constructors.
func ( UpdateClassArray) () ( UpdateBotChatInviteRequesterArray) {
	for ,  := range  {
		,  := .(*UpdateBotChatInviteRequester)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateMessageReactions returns copy with only UpdateMessageReactions constructors.
func ( UpdateClassArray) () ( UpdateMessageReactionsArray) {
	for ,  := range  {
		,  := .(*UpdateMessageReactions)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateWebViewResultSent returns copy with only UpdateWebViewResultSent constructors.
func ( UpdateClassArray) () ( UpdateWebViewResultSentArray) {
	for ,  := range  {
		,  := .(*UpdateWebViewResultSent)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotMenuButton returns copy with only UpdateBotMenuButton constructors.
func ( UpdateClassArray) () ( UpdateBotMenuButtonArray) {
	for ,  := range  {
		,  := .(*UpdateBotMenuButton)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateTranscribedAudio returns copy with only UpdateTranscribedAudio constructors.
func ( UpdateClassArray) () ( UpdateTranscribedAudioArray) {
	for ,  := range  {
		,  := .(*UpdateTranscribedAudio)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateUserEmojiStatus returns copy with only UpdateUserEmojiStatus constructors.
func ( UpdateClassArray) () ( UpdateUserEmojiStatusArray) {
	for ,  := range  {
		,  := .(*UpdateUserEmojiStatus)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateMoveStickerSetToTop returns copy with only UpdateMoveStickerSetToTop constructors.
func ( UpdateClassArray) () ( UpdateMoveStickerSetToTopArray) {
	for ,  := range  {
		,  := .(*UpdateMoveStickerSetToTop)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateMessageExtendedMedia returns copy with only UpdateMessageExtendedMedia constructors.
func ( UpdateClassArray) () ( UpdateMessageExtendedMediaArray) {
	for ,  := range  {
		,  := .(*UpdateMessageExtendedMedia)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelPinnedTopic returns copy with only UpdateChannelPinnedTopic constructors.
func ( UpdateClassArray) () ( UpdateChannelPinnedTopicArray) {
	for ,  := range  {
		,  := .(*UpdateChannelPinnedTopic)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelPinnedTopics returns copy with only UpdateChannelPinnedTopics constructors.
func ( UpdateClassArray) () ( UpdateChannelPinnedTopicsArray) {
	for ,  := range  {
		,  := .(*UpdateChannelPinnedTopics)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateUser returns copy with only UpdateUser constructors.
func ( UpdateClassArray) () ( UpdateUserArray) {
	for ,  := range  {
		,  := .(*UpdateUser)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateGroupInvitePrivacyForbidden returns copy with only UpdateGroupInvitePrivacyForbidden constructors.
func ( UpdateClassArray) () ( UpdateGroupInvitePrivacyForbiddenArray) {
	for ,  := range  {
		,  := .(*UpdateGroupInvitePrivacyForbidden)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateStory returns copy with only UpdateStory constructors.
func ( UpdateClassArray) () ( UpdateStoryArray) {
	for ,  := range  {
		,  := .(*UpdateStory)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateReadStories returns copy with only UpdateReadStories constructors.
func ( UpdateClassArray) () ( UpdateReadStoriesArray) {
	for ,  := range  {
		,  := .(*UpdateReadStories)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateStoryID returns copy with only UpdateStoryID constructors.
func ( UpdateClassArray) () ( UpdateStoryIDArray) {
	for ,  := range  {
		,  := .(*UpdateStoryID)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateStoriesStealthMode returns copy with only UpdateStoriesStealthMode constructors.
func ( UpdateClassArray) () ( UpdateStoriesStealthModeArray) {
	for ,  := range  {
		,  := .(*UpdateStoriesStealthMode)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateSentStoryReaction returns copy with only UpdateSentStoryReaction constructors.
func ( UpdateClassArray) () ( UpdateSentStoryReactionArray) {
	for ,  := range  {
		,  := .(*UpdateSentStoryReaction)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotChatBoost returns copy with only UpdateBotChatBoost constructors.
func ( UpdateClassArray) () ( UpdateBotChatBoostArray) {
	for ,  := range  {
		,  := .(*UpdateBotChatBoost)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateChannelViewForumAsMessages returns copy with only UpdateChannelViewForumAsMessages constructors.
func ( UpdateClassArray) () ( UpdateChannelViewForumAsMessagesArray) {
	for ,  := range  {
		,  := .(*UpdateChannelViewForumAsMessages)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdatePeerWallpaper returns copy with only UpdatePeerWallpaper constructors.
func ( UpdateClassArray) () ( UpdatePeerWallpaperArray) {
	for ,  := range  {
		,  := .(*UpdatePeerWallpaper)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotMessageReaction returns copy with only UpdateBotMessageReaction constructors.
func ( UpdateClassArray) () ( UpdateBotMessageReactionArray) {
	for ,  := range  {
		,  := .(*UpdateBotMessageReaction)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsUpdateBotMessageReactions returns copy with only UpdateBotMessageReactions constructors.
func ( UpdateClassArray) () ( UpdateBotMessageReactionsArray) {
	for ,  := range  {
		,  := .(*UpdateBotMessageReactions)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// UpdateNewMessageArray is adapter for slice of UpdateNewMessage.
type UpdateNewMessageArray []UpdateNewMessage

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateMessageIDArray is adapter for slice of UpdateMessageID.
type UpdateMessageIDArray []UpdateMessageID

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

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

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

// FillMap fills constructors to given map.
func ( UpdateMessageIDArray) ( map[int]UpdateMessageID) {
	for ,  := range  {
		[.GetID()] = 
	}
}

// ToMap collects constructors to map.
func ( UpdateMessageIDArray) () map[int]UpdateMessageID {
	 := make(map[int]UpdateMessageID, len())
	.FillMap()
	return 
}

// UpdateDeleteMessagesArray is adapter for slice of UpdateDeleteMessages.
type UpdateDeleteMessagesArray []UpdateDeleteMessages

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateUserTypingArray is adapter for slice of UpdateUserTyping.
type UpdateUserTypingArray []UpdateUserTyping

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChatUserTypingArray is adapter for slice of UpdateChatUserTyping.
type UpdateChatUserTypingArray []UpdateChatUserTyping

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChatParticipantsArray is adapter for slice of UpdateChatParticipants.
type UpdateChatParticipantsArray []UpdateChatParticipants

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateUserStatusArray is adapter for slice of UpdateUserStatus.
type UpdateUserStatusArray []UpdateUserStatus

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateUserNameArray is adapter for slice of UpdateUserName.
type UpdateUserNameArray []UpdateUserName

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateNewAuthorizationArray is adapter for slice of UpdateNewAuthorization.
type UpdateNewAuthorizationArray []UpdateNewAuthorization

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateNewEncryptedMessageArray is adapter for slice of UpdateNewEncryptedMessage.
type UpdateNewEncryptedMessageArray []UpdateNewEncryptedMessage

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateEncryptedChatTypingArray is adapter for slice of UpdateEncryptedChatTyping.
type UpdateEncryptedChatTypingArray []UpdateEncryptedChatTyping

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateEncryptionArray is adapter for slice of UpdateEncryption.
type UpdateEncryptionArray []UpdateEncryption

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

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

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

// UpdateEncryptedMessagesReadArray is adapter for slice of UpdateEncryptedMessagesRead.
type UpdateEncryptedMessagesReadArray []UpdateEncryptedMessagesRead

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

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

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

// UpdateChatParticipantAddArray is adapter for slice of UpdateChatParticipantAdd.
type UpdateChatParticipantAddArray []UpdateChatParticipantAdd

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

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

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

// UpdateChatParticipantDeleteArray is adapter for slice of UpdateChatParticipantDelete.
type UpdateChatParticipantDeleteArray []UpdateChatParticipantDelete

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateDCOptionsArray is adapter for slice of UpdateDCOptions.
type UpdateDCOptionsArray []UpdateDCOptions

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateNotifySettingsArray is adapter for slice of UpdateNotifySettings.
type UpdateNotifySettingsArray []UpdateNotifySettings

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateServiceNotificationArray is adapter for slice of UpdateServiceNotification.
type UpdateServiceNotificationArray []UpdateServiceNotification

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePrivacyArray is adapter for slice of UpdatePrivacy.
type UpdatePrivacyArray []UpdatePrivacy

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateUserPhoneArray is adapter for slice of UpdateUserPhone.
type UpdateUserPhoneArray []UpdateUserPhone

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateReadHistoryInboxArray is adapter for slice of UpdateReadHistoryInbox.
type UpdateReadHistoryInboxArray []UpdateReadHistoryInbox

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateReadHistoryOutboxArray is adapter for slice of UpdateReadHistoryOutbox.
type UpdateReadHistoryOutboxArray []UpdateReadHistoryOutbox

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateWebPageArray is adapter for slice of UpdateWebPage.
type UpdateWebPageArray []UpdateWebPage

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateReadMessagesContentsArray is adapter for slice of UpdateReadMessagesContents.
type UpdateReadMessagesContentsArray []UpdateReadMessagesContents

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChannelTooLongArray is adapter for slice of UpdateChannelTooLong.
type UpdateChannelTooLongArray []UpdateChannelTooLong

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChannelArray is adapter for slice of UpdateChannel.
type UpdateChannelArray []UpdateChannel

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateNewChannelMessageArray is adapter for slice of UpdateNewChannelMessage.
type UpdateNewChannelMessageArray []UpdateNewChannelMessage

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateReadChannelInboxArray is adapter for slice of UpdateReadChannelInbox.
type UpdateReadChannelInboxArray []UpdateReadChannelInbox

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateDeleteChannelMessagesArray is adapter for slice of UpdateDeleteChannelMessages.
type UpdateDeleteChannelMessagesArray []UpdateDeleteChannelMessages

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChannelMessageViewsArray is adapter for slice of UpdateChannelMessageViews.
type UpdateChannelMessageViewsArray []UpdateChannelMessageViews

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

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

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

// FillMap fills constructors to given map.
func ( UpdateChannelMessageViewsArray) ( map[int]UpdateChannelMessageViews) {
	for ,  := range  {
		[.GetID()] = 
	}
}

// ToMap collects constructors to map.
func ( UpdateChannelMessageViewsArray) () map[int]UpdateChannelMessageViews {
	 := make(map[int]UpdateChannelMessageViews, len())
	.FillMap()
	return 
}

// UpdateChatParticipantAdminArray is adapter for slice of UpdateChatParticipantAdmin.
type UpdateChatParticipantAdminArray []UpdateChatParticipantAdmin

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateNewStickerSetArray is adapter for slice of UpdateNewStickerSet.
type UpdateNewStickerSetArray []UpdateNewStickerSet

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateStickerSetsOrderArray is adapter for slice of UpdateStickerSetsOrder.
type UpdateStickerSetsOrderArray []UpdateStickerSetsOrder

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateStickerSetsArray is adapter for slice of UpdateStickerSets.
type UpdateStickerSetsArray []UpdateStickerSets

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateBotInlineQueryArray is adapter for slice of UpdateBotInlineQuery.
type UpdateBotInlineQueryArray []UpdateBotInlineQuery

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateBotInlineSendArray is adapter for slice of UpdateBotInlineSend.
type UpdateBotInlineSendArray []UpdateBotInlineSend

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateEditChannelMessageArray is adapter for slice of UpdateEditChannelMessage.
type UpdateEditChannelMessageArray []UpdateEditChannelMessage

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateBotCallbackQueryArray is adapter for slice of UpdateBotCallbackQuery.
type UpdateBotCallbackQueryArray []UpdateBotCallbackQuery

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateEditMessageArray is adapter for slice of UpdateEditMessage.
type UpdateEditMessageArray []UpdateEditMessage

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateInlineBotCallbackQueryArray is adapter for slice of UpdateInlineBotCallbackQuery.
type UpdateInlineBotCallbackQueryArray []UpdateInlineBotCallbackQuery

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateReadChannelOutboxArray is adapter for slice of UpdateReadChannelOutbox.
type UpdateReadChannelOutboxArray []UpdateReadChannelOutbox

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateDraftMessageArray is adapter for slice of UpdateDraftMessage.
type UpdateDraftMessageArray []UpdateDraftMessage

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChannelWebPageArray is adapter for slice of UpdateChannelWebPage.
type UpdateChannelWebPageArray []UpdateChannelWebPage

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateDialogPinnedArray is adapter for slice of UpdateDialogPinned.
type UpdateDialogPinnedArray []UpdateDialogPinned

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePinnedDialogsArray is adapter for slice of UpdatePinnedDialogs.
type UpdatePinnedDialogsArray []UpdatePinnedDialogs

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateBotWebhookJSONArray is adapter for slice of UpdateBotWebhookJSON.
type UpdateBotWebhookJSONArray []UpdateBotWebhookJSON

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateBotWebhookJSONQueryArray is adapter for slice of UpdateBotWebhookJSONQuery.
type UpdateBotWebhookJSONQueryArray []UpdateBotWebhookJSONQuery

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateBotShippingQueryArray is adapter for slice of UpdateBotShippingQuery.
type UpdateBotShippingQueryArray []UpdateBotShippingQuery

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateBotPrecheckoutQueryArray is adapter for slice of UpdateBotPrecheckoutQuery.
type UpdateBotPrecheckoutQueryArray []UpdateBotPrecheckoutQuery

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePhoneCallArray is adapter for slice of UpdatePhoneCall.
type UpdatePhoneCallArray []UpdatePhoneCall

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateLangPackTooLongArray is adapter for slice of UpdateLangPackTooLong.
type UpdateLangPackTooLongArray []UpdateLangPackTooLong

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateLangPackArray is adapter for slice of UpdateLangPack.
type UpdateLangPackArray []UpdateLangPack

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChannelReadMessagesContentsArray is adapter for slice of UpdateChannelReadMessagesContents.
type UpdateChannelReadMessagesContentsArray []UpdateChannelReadMessagesContents

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChannelAvailableMessagesArray is adapter for slice of UpdateChannelAvailableMessages.
type UpdateChannelAvailableMessagesArray []UpdateChannelAvailableMessages

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateDialogUnreadMarkArray is adapter for slice of UpdateDialogUnreadMark.
type UpdateDialogUnreadMarkArray []UpdateDialogUnreadMark

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateMessagePollArray is adapter for slice of UpdateMessagePoll.
type UpdateMessagePollArray []UpdateMessagePoll

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChatDefaultBannedRightsArray is adapter for slice of UpdateChatDefaultBannedRights.
type UpdateChatDefaultBannedRightsArray []UpdateChatDefaultBannedRights

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateFolderPeersArray is adapter for slice of UpdateFolderPeers.
type UpdateFolderPeersArray []UpdateFolderPeers

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePeerSettingsArray is adapter for slice of UpdatePeerSettings.
type UpdatePeerSettingsArray []UpdatePeerSettings

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePeerLocatedArray is adapter for slice of UpdatePeerLocated.
type UpdatePeerLocatedArray []UpdatePeerLocated

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateNewScheduledMessageArray is adapter for slice of UpdateNewScheduledMessage.
type UpdateNewScheduledMessageArray []UpdateNewScheduledMessage

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateDeleteScheduledMessagesArray is adapter for slice of UpdateDeleteScheduledMessages.
type UpdateDeleteScheduledMessagesArray []UpdateDeleteScheduledMessages

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateThemeArray is adapter for slice of UpdateTheme.
type UpdateThemeArray []UpdateTheme

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateGeoLiveViewedArray is adapter for slice of UpdateGeoLiveViewed.
type UpdateGeoLiveViewedArray []UpdateGeoLiveViewed

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateMessagePollVoteArray is adapter for slice of UpdateMessagePollVote.
type UpdateMessagePollVoteArray []UpdateMessagePollVote

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateDialogFilterArray is adapter for slice of UpdateDialogFilter.
type UpdateDialogFilterArray []UpdateDialogFilter

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

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

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

// FillMap fills constructors to given map.
func ( UpdateDialogFilterArray) ( map[int]UpdateDialogFilter) {
	for ,  := range  {
		[.GetID()] = 
	}
}

// ToMap collects constructors to map.
func ( UpdateDialogFilterArray) () map[int]UpdateDialogFilter {
	 := make(map[int]UpdateDialogFilter, len())
	.FillMap()
	return 
}

// UpdateDialogFilterOrderArray is adapter for slice of UpdateDialogFilterOrder.
type UpdateDialogFilterOrderArray []UpdateDialogFilterOrder

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePhoneCallSignalingDataArray is adapter for slice of UpdatePhoneCallSignalingData.
type UpdatePhoneCallSignalingDataArray []UpdatePhoneCallSignalingData

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChannelMessageForwardsArray is adapter for slice of UpdateChannelMessageForwards.
type UpdateChannelMessageForwardsArray []UpdateChannelMessageForwards

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

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

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

// FillMap fills constructors to given map.
func ( UpdateChannelMessageForwardsArray) ( map[int]UpdateChannelMessageForwards) {
	for ,  := range  {
		[.GetID()] = 
	}
}

// ToMap collects constructors to map.
func ( UpdateChannelMessageForwardsArray) () map[int]UpdateChannelMessageForwards {
	 := make(map[int]UpdateChannelMessageForwards, len())
	.FillMap()
	return 
}

// UpdateReadChannelDiscussionInboxArray is adapter for slice of UpdateReadChannelDiscussionInbox.
type UpdateReadChannelDiscussionInboxArray []UpdateReadChannelDiscussionInbox

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateReadChannelDiscussionOutboxArray is adapter for slice of UpdateReadChannelDiscussionOutbox.
type UpdateReadChannelDiscussionOutboxArray []UpdateReadChannelDiscussionOutbox

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePeerBlockedArray is adapter for slice of UpdatePeerBlocked.
type UpdatePeerBlockedArray []UpdatePeerBlocked

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChannelUserTypingArray is adapter for slice of UpdateChannelUserTyping.
type UpdateChannelUserTypingArray []UpdateChannelUserTyping

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePinnedMessagesArray is adapter for slice of UpdatePinnedMessages.
type UpdatePinnedMessagesArray []UpdatePinnedMessages

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePinnedChannelMessagesArray is adapter for slice of UpdatePinnedChannelMessages.
type UpdatePinnedChannelMessagesArray []UpdatePinnedChannelMessages

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChatArray is adapter for slice of UpdateChat.
type UpdateChatArray []UpdateChat

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateGroupCallParticipantsArray is adapter for slice of UpdateGroupCallParticipants.
type UpdateGroupCallParticipantsArray []UpdateGroupCallParticipants

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateGroupCallArray is adapter for slice of UpdateGroupCall.
type UpdateGroupCallArray []UpdateGroupCall

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePeerHistoryTTLArray is adapter for slice of UpdatePeerHistoryTTL.
type UpdatePeerHistoryTTLArray []UpdatePeerHistoryTTL

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateChatParticipantArray is adapter for slice of UpdateChatParticipant.
type UpdateChatParticipantArray []UpdateChatParticipant

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

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

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

// UpdateChannelParticipantArray is adapter for slice of UpdateChannelParticipant.
type UpdateChannelParticipantArray []UpdateChannelParticipant

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

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

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

// UpdateBotStoppedArray is adapter for slice of UpdateBotStopped.
type UpdateBotStoppedArray []UpdateBotStopped

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

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

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

// UpdateGroupCallConnectionArray is adapter for slice of UpdateGroupCallConnection.
type UpdateGroupCallConnectionArray []UpdateGroupCallConnection

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateBotCommandsArray is adapter for slice of UpdateBotCommands.
type UpdateBotCommandsArray []UpdateBotCommands

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdatePendingJoinRequestsArray is adapter for slice of UpdatePendingJoinRequests.
type UpdatePendingJoinRequestsArray []UpdatePendingJoinRequests

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// UpdateBotChatInviteRequesterArray is adapter for slice of UpdateBotChatInviteRequester.
type UpdateBotChatInviteRequesterArray []UpdateBotChatInviteRequester

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

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

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

	return 
}

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

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

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateBotChatInviteRequesterArray) () ( UpdateBotChatInviteRequester,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateBotChatInviteRequester
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateBotChatInviteRequesterArray) () ( UpdateBotChatInviteRequester,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// SortByDate sorts slice of UpdateBotChatInviteRequester by Date.
func ( UpdateBotChatInviteRequesterArray) () UpdateBotChatInviteRequesterArray {
	return .Sort(func(,  UpdateBotChatInviteRequester) bool {
		return .GetDate() < .GetDate()
	})
}

// SortStableByDate sorts slice of UpdateBotChatInviteRequester by Date.
func ( UpdateBotChatInviteRequesterArray) () UpdateBotChatInviteRequesterArray {
	return .SortStable(func(,  UpdateBotChatInviteRequester) bool {
		return .GetDate() < .GetDate()
	})
}

// UpdateMessageReactionsArray is adapter for slice of UpdateMessageReactions.
type UpdateMessageReactionsArray []UpdateMessageReactions

// Sort sorts slice of UpdateMessageReactions.
func ( UpdateMessageReactionsArray) ( func(,  UpdateMessageReactions) bool) UpdateMessageReactionsArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateMessageReactions.
func ( UpdateMessageReactionsArray) ( func(,  UpdateMessageReactions) bool) UpdateMessageReactionsArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateMessageReactions.
func ( UpdateMessageReactionsArray) ( func( UpdateMessageReactions) bool) UpdateMessageReactionsArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateMessageReactionsArray) () ( UpdateMessageReactions,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateMessageReactionsArray) () ( UpdateMessageReactions,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateMessageReactionsArray) () ( UpdateMessageReactions,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateMessageReactions
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateMessageReactionsArray) () ( UpdateMessageReactions,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateWebViewResultSentArray is adapter for slice of UpdateWebViewResultSent.
type UpdateWebViewResultSentArray []UpdateWebViewResultSent

// Sort sorts slice of UpdateWebViewResultSent.
func ( UpdateWebViewResultSentArray) ( func(,  UpdateWebViewResultSent) bool) UpdateWebViewResultSentArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateWebViewResultSent.
func ( UpdateWebViewResultSentArray) ( func(,  UpdateWebViewResultSent) bool) UpdateWebViewResultSentArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateWebViewResultSent.
func ( UpdateWebViewResultSentArray) ( func( UpdateWebViewResultSent) bool) UpdateWebViewResultSentArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateWebViewResultSentArray) () ( UpdateWebViewResultSent,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateWebViewResultSentArray) () ( UpdateWebViewResultSent,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateWebViewResultSentArray) () ( UpdateWebViewResultSent,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateWebViewResultSent
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateWebViewResultSentArray) () ( UpdateWebViewResultSent,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateBotMenuButtonArray is adapter for slice of UpdateBotMenuButton.
type UpdateBotMenuButtonArray []UpdateBotMenuButton

// Sort sorts slice of UpdateBotMenuButton.
func ( UpdateBotMenuButtonArray) ( func(,  UpdateBotMenuButton) bool) UpdateBotMenuButtonArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateBotMenuButton.
func ( UpdateBotMenuButtonArray) ( func(,  UpdateBotMenuButton) bool) UpdateBotMenuButtonArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateBotMenuButton.
func ( UpdateBotMenuButtonArray) ( func( UpdateBotMenuButton) bool) UpdateBotMenuButtonArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateBotMenuButtonArray) () ( UpdateBotMenuButton,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateBotMenuButtonArray) () ( UpdateBotMenuButton,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateBotMenuButtonArray) () ( UpdateBotMenuButton,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateBotMenuButton
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateBotMenuButtonArray) () ( UpdateBotMenuButton,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateTranscribedAudioArray is adapter for slice of UpdateTranscribedAudio.
type UpdateTranscribedAudioArray []UpdateTranscribedAudio

// Sort sorts slice of UpdateTranscribedAudio.
func ( UpdateTranscribedAudioArray) ( func(,  UpdateTranscribedAudio) bool) UpdateTranscribedAudioArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateTranscribedAudio.
func ( UpdateTranscribedAudioArray) ( func(,  UpdateTranscribedAudio) bool) UpdateTranscribedAudioArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateTranscribedAudio.
func ( UpdateTranscribedAudioArray) ( func( UpdateTranscribedAudio) bool) UpdateTranscribedAudioArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateTranscribedAudioArray) () ( UpdateTranscribedAudio,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateTranscribedAudioArray) () ( UpdateTranscribedAudio,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateTranscribedAudioArray) () ( UpdateTranscribedAudio,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateTranscribedAudio
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateTranscribedAudioArray) () ( UpdateTranscribedAudio,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateUserEmojiStatusArray is adapter for slice of UpdateUserEmojiStatus.
type UpdateUserEmojiStatusArray []UpdateUserEmojiStatus

// Sort sorts slice of UpdateUserEmojiStatus.
func ( UpdateUserEmojiStatusArray) ( func(,  UpdateUserEmojiStatus) bool) UpdateUserEmojiStatusArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateUserEmojiStatus.
func ( UpdateUserEmojiStatusArray) ( func(,  UpdateUserEmojiStatus) bool) UpdateUserEmojiStatusArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateUserEmojiStatus.
func ( UpdateUserEmojiStatusArray) ( func( UpdateUserEmojiStatus) bool) UpdateUserEmojiStatusArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateUserEmojiStatusArray) () ( UpdateUserEmojiStatus,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateUserEmojiStatusArray) () ( UpdateUserEmojiStatus,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateUserEmojiStatusArray) () ( UpdateUserEmojiStatus,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateUserEmojiStatus
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateUserEmojiStatusArray) () ( UpdateUserEmojiStatus,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateMoveStickerSetToTopArray is adapter for slice of UpdateMoveStickerSetToTop.
type UpdateMoveStickerSetToTopArray []UpdateMoveStickerSetToTop

// Sort sorts slice of UpdateMoveStickerSetToTop.
func ( UpdateMoveStickerSetToTopArray) ( func(,  UpdateMoveStickerSetToTop) bool) UpdateMoveStickerSetToTopArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateMoveStickerSetToTop.
func ( UpdateMoveStickerSetToTopArray) ( func(,  UpdateMoveStickerSetToTop) bool) UpdateMoveStickerSetToTopArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateMoveStickerSetToTop.
func ( UpdateMoveStickerSetToTopArray) ( func( UpdateMoveStickerSetToTop) bool) UpdateMoveStickerSetToTopArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateMoveStickerSetToTopArray) () ( UpdateMoveStickerSetToTop,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateMoveStickerSetToTopArray) () ( UpdateMoveStickerSetToTop,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateMoveStickerSetToTopArray) () ( UpdateMoveStickerSetToTop,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateMoveStickerSetToTop
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateMoveStickerSetToTopArray) () ( UpdateMoveStickerSetToTop,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateMessageExtendedMediaArray is adapter for slice of UpdateMessageExtendedMedia.
type UpdateMessageExtendedMediaArray []UpdateMessageExtendedMedia

// Sort sorts slice of UpdateMessageExtendedMedia.
func ( UpdateMessageExtendedMediaArray) ( func(,  UpdateMessageExtendedMedia) bool) UpdateMessageExtendedMediaArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateMessageExtendedMedia.
func ( UpdateMessageExtendedMediaArray) ( func(,  UpdateMessageExtendedMedia) bool) UpdateMessageExtendedMediaArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateMessageExtendedMedia.
func ( UpdateMessageExtendedMediaArray) ( func( UpdateMessageExtendedMedia) bool) UpdateMessageExtendedMediaArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateMessageExtendedMediaArray) () ( UpdateMessageExtendedMedia,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateMessageExtendedMediaArray) () ( UpdateMessageExtendedMedia,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateMessageExtendedMediaArray) () ( UpdateMessageExtendedMedia,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateMessageExtendedMedia
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateMessageExtendedMediaArray) () ( UpdateMessageExtendedMedia,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateChannelPinnedTopicArray is adapter for slice of UpdateChannelPinnedTopic.
type UpdateChannelPinnedTopicArray []UpdateChannelPinnedTopic

// Sort sorts slice of UpdateChannelPinnedTopic.
func ( UpdateChannelPinnedTopicArray) ( func(,  UpdateChannelPinnedTopic) bool) UpdateChannelPinnedTopicArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateChannelPinnedTopic.
func ( UpdateChannelPinnedTopicArray) ( func(,  UpdateChannelPinnedTopic) bool) UpdateChannelPinnedTopicArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateChannelPinnedTopic.
func ( UpdateChannelPinnedTopicArray) ( func( UpdateChannelPinnedTopic) bool) UpdateChannelPinnedTopicArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateChannelPinnedTopicArray) () ( UpdateChannelPinnedTopic,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateChannelPinnedTopicArray) () ( UpdateChannelPinnedTopic,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateChannelPinnedTopicArray) () ( UpdateChannelPinnedTopic,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateChannelPinnedTopic
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateChannelPinnedTopicArray) () ( UpdateChannelPinnedTopic,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateChannelPinnedTopicsArray is adapter for slice of UpdateChannelPinnedTopics.
type UpdateChannelPinnedTopicsArray []UpdateChannelPinnedTopics

// Sort sorts slice of UpdateChannelPinnedTopics.
func ( UpdateChannelPinnedTopicsArray) ( func(,  UpdateChannelPinnedTopics) bool) UpdateChannelPinnedTopicsArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateChannelPinnedTopics.
func ( UpdateChannelPinnedTopicsArray) ( func(,  UpdateChannelPinnedTopics) bool) UpdateChannelPinnedTopicsArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateChannelPinnedTopics.
func ( UpdateChannelPinnedTopicsArray) ( func( UpdateChannelPinnedTopics) bool) UpdateChannelPinnedTopicsArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateChannelPinnedTopicsArray) () ( UpdateChannelPinnedTopics,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateChannelPinnedTopicsArray) () ( UpdateChannelPinnedTopics,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateChannelPinnedTopicsArray) () ( UpdateChannelPinnedTopics,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateChannelPinnedTopics
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateChannelPinnedTopicsArray) () ( UpdateChannelPinnedTopics,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateUserArray is adapter for slice of UpdateUser.
type UpdateUserArray []UpdateUser

// Sort sorts slice of UpdateUser.
func ( UpdateUserArray) ( func(,  UpdateUser) bool) UpdateUserArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateUser.
func ( UpdateUserArray) ( func(,  UpdateUser) bool) UpdateUserArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateUser.
func ( UpdateUserArray) ( func( UpdateUser) bool) UpdateUserArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateUserArray) () ( UpdateUser,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateUserArray) () ( UpdateUser,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateUserArray) () ( UpdateUser,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateUser
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateUserArray) () ( UpdateUser,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateGroupInvitePrivacyForbiddenArray is adapter for slice of UpdateGroupInvitePrivacyForbidden.
type UpdateGroupInvitePrivacyForbiddenArray []UpdateGroupInvitePrivacyForbidden

// Sort sorts slice of UpdateGroupInvitePrivacyForbidden.
func ( UpdateGroupInvitePrivacyForbiddenArray) ( func(,  UpdateGroupInvitePrivacyForbidden) bool) UpdateGroupInvitePrivacyForbiddenArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateGroupInvitePrivacyForbidden.
func ( UpdateGroupInvitePrivacyForbiddenArray) ( func(,  UpdateGroupInvitePrivacyForbidden) bool) UpdateGroupInvitePrivacyForbiddenArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateGroupInvitePrivacyForbidden.
func ( UpdateGroupInvitePrivacyForbiddenArray) ( func( UpdateGroupInvitePrivacyForbidden) bool) UpdateGroupInvitePrivacyForbiddenArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateGroupInvitePrivacyForbiddenArray) () ( UpdateGroupInvitePrivacyForbidden,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateGroupInvitePrivacyForbiddenArray) () ( UpdateGroupInvitePrivacyForbidden,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateGroupInvitePrivacyForbiddenArray) () ( UpdateGroupInvitePrivacyForbidden,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateGroupInvitePrivacyForbidden
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateGroupInvitePrivacyForbiddenArray) () ( UpdateGroupInvitePrivacyForbidden,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateStoryArray is adapter for slice of UpdateStory.
type UpdateStoryArray []UpdateStory

// Sort sorts slice of UpdateStory.
func ( UpdateStoryArray) ( func(,  UpdateStory) bool) UpdateStoryArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateStory.
func ( UpdateStoryArray) ( func(,  UpdateStory) bool) UpdateStoryArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateStory.
func ( UpdateStoryArray) ( func( UpdateStory) bool) UpdateStoryArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateStoryArray) () ( UpdateStory,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateStoryArray) () ( UpdateStory,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateStoryArray) () ( UpdateStory,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateStory
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateStoryArray) () ( UpdateStory,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateReadStoriesArray is adapter for slice of UpdateReadStories.
type UpdateReadStoriesArray []UpdateReadStories

// Sort sorts slice of UpdateReadStories.
func ( UpdateReadStoriesArray) ( func(,  UpdateReadStories) bool) UpdateReadStoriesArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateReadStories.
func ( UpdateReadStoriesArray) ( func(,  UpdateReadStories) bool) UpdateReadStoriesArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateReadStories.
func ( UpdateReadStoriesArray) ( func( UpdateReadStories) bool) UpdateReadStoriesArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateReadStoriesArray) () ( UpdateReadStories,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateReadStoriesArray) () ( UpdateReadStories,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateReadStoriesArray) () ( UpdateReadStories,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateReadStories
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateReadStoriesArray) () ( UpdateReadStories,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateStoryIDArray is adapter for slice of UpdateStoryID.
type UpdateStoryIDArray []UpdateStoryID

// Sort sorts slice of UpdateStoryID.
func ( UpdateStoryIDArray) ( func(,  UpdateStoryID) bool) UpdateStoryIDArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateStoryID.
func ( UpdateStoryIDArray) ( func(,  UpdateStoryID) bool) UpdateStoryIDArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateStoryID.
func ( UpdateStoryIDArray) ( func( UpdateStoryID) bool) UpdateStoryIDArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateStoryIDArray) () ( UpdateStoryID,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateStoryIDArray) () ( UpdateStoryID,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateStoryIDArray) () ( UpdateStoryID,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateStoryID
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateStoryIDArray) () ( UpdateStoryID,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// SortByID sorts slice of UpdateStoryID by ID.
func ( UpdateStoryIDArray) () UpdateStoryIDArray {
	return .Sort(func(,  UpdateStoryID) bool {
		return .GetID() < .GetID()
	})
}

// SortStableByID sorts slice of UpdateStoryID by ID.
func ( UpdateStoryIDArray) () UpdateStoryIDArray {
	return .SortStable(func(,  UpdateStoryID) bool {
		return .GetID() < .GetID()
	})
}

// FillMap fills constructors to given map.
func ( UpdateStoryIDArray) ( map[int]UpdateStoryID) {
	for ,  := range  {
		[.GetID()] = 
	}
}

// ToMap collects constructors to map.
func ( UpdateStoryIDArray) () map[int]UpdateStoryID {
	 := make(map[int]UpdateStoryID, len())
	.FillMap()
	return 
}

// UpdateStoriesStealthModeArray is adapter for slice of UpdateStoriesStealthMode.
type UpdateStoriesStealthModeArray []UpdateStoriesStealthMode

// Sort sorts slice of UpdateStoriesStealthMode.
func ( UpdateStoriesStealthModeArray) ( func(,  UpdateStoriesStealthMode) bool) UpdateStoriesStealthModeArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateStoriesStealthMode.
func ( UpdateStoriesStealthModeArray) ( func(,  UpdateStoriesStealthMode) bool) UpdateStoriesStealthModeArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateStoriesStealthMode.
func ( UpdateStoriesStealthModeArray) ( func( UpdateStoriesStealthMode) bool) UpdateStoriesStealthModeArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateStoriesStealthModeArray) () ( UpdateStoriesStealthMode,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateStoriesStealthModeArray) () ( UpdateStoriesStealthMode,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateStoriesStealthModeArray) () ( UpdateStoriesStealthMode,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateStoriesStealthMode
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateStoriesStealthModeArray) () ( UpdateStoriesStealthMode,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateSentStoryReactionArray is adapter for slice of UpdateSentStoryReaction.
type UpdateSentStoryReactionArray []UpdateSentStoryReaction

// Sort sorts slice of UpdateSentStoryReaction.
func ( UpdateSentStoryReactionArray) ( func(,  UpdateSentStoryReaction) bool) UpdateSentStoryReactionArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateSentStoryReaction.
func ( UpdateSentStoryReactionArray) ( func(,  UpdateSentStoryReaction) bool) UpdateSentStoryReactionArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateSentStoryReaction.
func ( UpdateSentStoryReactionArray) ( func( UpdateSentStoryReaction) bool) UpdateSentStoryReactionArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateSentStoryReactionArray) () ( UpdateSentStoryReaction,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateSentStoryReactionArray) () ( UpdateSentStoryReaction,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateSentStoryReactionArray) () ( UpdateSentStoryReaction,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateSentStoryReaction
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateSentStoryReactionArray) () ( UpdateSentStoryReaction,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateBotChatBoostArray is adapter for slice of UpdateBotChatBoost.
type UpdateBotChatBoostArray []UpdateBotChatBoost

// Sort sorts slice of UpdateBotChatBoost.
func ( UpdateBotChatBoostArray) ( func(,  UpdateBotChatBoost) bool) UpdateBotChatBoostArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateBotChatBoost.
func ( UpdateBotChatBoostArray) ( func(,  UpdateBotChatBoost) bool) UpdateBotChatBoostArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateBotChatBoost.
func ( UpdateBotChatBoostArray) ( func( UpdateBotChatBoost) bool) UpdateBotChatBoostArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateBotChatBoostArray) () ( UpdateBotChatBoost,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateBotChatBoostArray) () ( UpdateBotChatBoost,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateBotChatBoostArray) () ( UpdateBotChatBoost,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateBotChatBoost
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateBotChatBoostArray) () ( UpdateBotChatBoost,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateChannelViewForumAsMessagesArray is adapter for slice of UpdateChannelViewForumAsMessages.
type UpdateChannelViewForumAsMessagesArray []UpdateChannelViewForumAsMessages

// Sort sorts slice of UpdateChannelViewForumAsMessages.
func ( UpdateChannelViewForumAsMessagesArray) ( func(,  UpdateChannelViewForumAsMessages) bool) UpdateChannelViewForumAsMessagesArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateChannelViewForumAsMessages.
func ( UpdateChannelViewForumAsMessagesArray) ( func(,  UpdateChannelViewForumAsMessages) bool) UpdateChannelViewForumAsMessagesArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateChannelViewForumAsMessages.
func ( UpdateChannelViewForumAsMessagesArray) ( func( UpdateChannelViewForumAsMessages) bool) UpdateChannelViewForumAsMessagesArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateChannelViewForumAsMessagesArray) () ( UpdateChannelViewForumAsMessages,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateChannelViewForumAsMessagesArray) () ( UpdateChannelViewForumAsMessages,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateChannelViewForumAsMessagesArray) () ( UpdateChannelViewForumAsMessages,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateChannelViewForumAsMessages
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateChannelViewForumAsMessagesArray) () ( UpdateChannelViewForumAsMessages,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdatePeerWallpaperArray is adapter for slice of UpdatePeerWallpaper.
type UpdatePeerWallpaperArray []UpdatePeerWallpaper

// Sort sorts slice of UpdatePeerWallpaper.
func ( UpdatePeerWallpaperArray) ( func(,  UpdatePeerWallpaper) bool) UpdatePeerWallpaperArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdatePeerWallpaper.
func ( UpdatePeerWallpaperArray) ( func(,  UpdatePeerWallpaper) bool) UpdatePeerWallpaperArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdatePeerWallpaper.
func ( UpdatePeerWallpaperArray) ( func( UpdatePeerWallpaper) bool) UpdatePeerWallpaperArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdatePeerWallpaperArray) () ( UpdatePeerWallpaper,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdatePeerWallpaperArray) () ( UpdatePeerWallpaper,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdatePeerWallpaperArray) () ( UpdatePeerWallpaper,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdatePeerWallpaper
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdatePeerWallpaperArray) () ( UpdatePeerWallpaper,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// UpdateBotMessageReactionArray is adapter for slice of UpdateBotMessageReaction.
type UpdateBotMessageReactionArray []UpdateBotMessageReaction

// Sort sorts slice of UpdateBotMessageReaction.
func ( UpdateBotMessageReactionArray) ( func(,  UpdateBotMessageReaction) bool) UpdateBotMessageReactionArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateBotMessageReaction.
func ( UpdateBotMessageReactionArray) ( func(,  UpdateBotMessageReaction) bool) UpdateBotMessageReactionArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateBotMessageReaction.
func ( UpdateBotMessageReactionArray) ( func( UpdateBotMessageReaction) bool) UpdateBotMessageReactionArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateBotMessageReactionArray) () ( UpdateBotMessageReaction,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateBotMessageReactionArray) () ( UpdateBotMessageReaction,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateBotMessageReactionArray) () ( UpdateBotMessageReaction,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateBotMessageReaction
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateBotMessageReactionArray) () ( UpdateBotMessageReaction,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// SortByDate sorts slice of UpdateBotMessageReaction by Date.
func ( UpdateBotMessageReactionArray) () UpdateBotMessageReactionArray {
	return .Sort(func(,  UpdateBotMessageReaction) bool {
		return .GetDate() < .GetDate()
	})
}

// SortStableByDate sorts slice of UpdateBotMessageReaction by Date.
func ( UpdateBotMessageReactionArray) () UpdateBotMessageReactionArray {
	return .SortStable(func(,  UpdateBotMessageReaction) bool {
		return .GetDate() < .GetDate()
	})
}

// UpdateBotMessageReactionsArray is adapter for slice of UpdateBotMessageReactions.
type UpdateBotMessageReactionsArray []UpdateBotMessageReactions

// Sort sorts slice of UpdateBotMessageReactions.
func ( UpdateBotMessageReactionsArray) ( func(,  UpdateBotMessageReactions) bool) UpdateBotMessageReactionsArray {
	sort.Slice(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// SortStable sorts slice of UpdateBotMessageReactions.
func ( UpdateBotMessageReactionsArray) ( func(,  UpdateBotMessageReactions) bool) UpdateBotMessageReactionsArray {
	sort.SliceStable(, func(,  int) bool {
		return ([], [])
	})
	return 
}

// Retain filters in-place slice of UpdateBotMessageReactions.
func ( UpdateBotMessageReactionsArray) ( func( UpdateBotMessageReactions) bool) UpdateBotMessageReactionsArray {
	 := 0
	for ,  := range  {
		if () {
			[] = 
			++
		}
	}
	 = [:]

	return 
}

// First returns first element of slice (if exists).
func ( UpdateBotMessageReactionsArray) () ( UpdateBotMessageReactions,  bool) {
	if len() < 1 {
		return
	}
	return [0], true
}

// Last returns last element of slice (if exists).
func ( UpdateBotMessageReactionsArray) () ( UpdateBotMessageReactions,  bool) {
	if len() < 1 {
		return
	}
	return [len()-1], true
}

// PopFirst returns first element of slice (if exists) and deletes it.
func ( *UpdateBotMessageReactionsArray) () ( UpdateBotMessageReactions,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [0]

	// Delete by index from SliceTricks.
	copy([0:], [1:])
	var  UpdateBotMessageReactions
	[len()-1] = 
	 = [:len()-1]
	* = 

	return , true
}

// Pop returns last element of slice (if exists) and deletes it.
func ( *UpdateBotMessageReactionsArray) () ( UpdateBotMessageReactions,  bool) {
	if  == nil || len(*) < 1 {
		return
	}

	 := *
	 = [len()-1]
	 = [:len()-1]
	* = 

	return , true
}

// SortByDate sorts slice of UpdateBotMessageReactions by Date.
func ( UpdateBotMessageReactionsArray) () UpdateBotMessageReactionsArray {
	return .Sort(func(,  UpdateBotMessageReactions) bool {
		return .GetDate() < .GetDate()
	})
}

// SortStableByDate sorts slice of UpdateBotMessageReactions by Date.
func ( UpdateBotMessageReactionsArray) () UpdateBotMessageReactionsArray {
	return .SortStable(func(,  UpdateBotMessageReactions) bool {
		return .GetDate() < .GetDate()
	})
}