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

// MessageEntityClassArray is adapter for slice of MessageEntityClass.
type MessageEntityClassArray []MessageEntityClass

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AsMessageEntityUnknown returns copy with only MessageEntityUnknown constructors.
func ( MessageEntityClassArray) () ( MessageEntityUnknownArray) {
	for ,  := range  {
		,  := .(*MessageEntityUnknown)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityMention returns copy with only MessageEntityMention constructors.
func ( MessageEntityClassArray) () ( MessageEntityMentionArray) {
	for ,  := range  {
		,  := .(*MessageEntityMention)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityHashtag returns copy with only MessageEntityHashtag constructors.
func ( MessageEntityClassArray) () ( MessageEntityHashtagArray) {
	for ,  := range  {
		,  := .(*MessageEntityHashtag)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityBotCommand returns copy with only MessageEntityBotCommand constructors.
func ( MessageEntityClassArray) () ( MessageEntityBotCommandArray) {
	for ,  := range  {
		,  := .(*MessageEntityBotCommand)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityURL returns copy with only MessageEntityURL constructors.
func ( MessageEntityClassArray) () ( MessageEntityURLArray) {
	for ,  := range  {
		,  := .(*MessageEntityURL)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityEmail returns copy with only MessageEntityEmail constructors.
func ( MessageEntityClassArray) () ( MessageEntityEmailArray) {
	for ,  := range  {
		,  := .(*MessageEntityEmail)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityBold returns copy with only MessageEntityBold constructors.
func ( MessageEntityClassArray) () ( MessageEntityBoldArray) {
	for ,  := range  {
		,  := .(*MessageEntityBold)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityItalic returns copy with only MessageEntityItalic constructors.
func ( MessageEntityClassArray) () ( MessageEntityItalicArray) {
	for ,  := range  {
		,  := .(*MessageEntityItalic)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityCode returns copy with only MessageEntityCode constructors.
func ( MessageEntityClassArray) () ( MessageEntityCodeArray) {
	for ,  := range  {
		,  := .(*MessageEntityCode)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityPre returns copy with only MessageEntityPre constructors.
func ( MessageEntityClassArray) () ( MessageEntityPreArray) {
	for ,  := range  {
		,  := .(*MessageEntityPre)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityTextURL returns copy with only MessageEntityTextURL constructors.
func ( MessageEntityClassArray) () ( MessageEntityTextURLArray) {
	for ,  := range  {
		,  := .(*MessageEntityTextURL)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityMentionName returns copy with only MessageEntityMentionName constructors.
func ( MessageEntityClassArray) () ( MessageEntityMentionNameArray) {
	for ,  := range  {
		,  := .(*MessageEntityMentionName)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputMessageEntityMentionName returns copy with only InputMessageEntityMentionName constructors.
func ( MessageEntityClassArray) () ( InputMessageEntityMentionNameArray) {
	for ,  := range  {
		,  := .(*InputMessageEntityMentionName)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityPhone returns copy with only MessageEntityPhone constructors.
func ( MessageEntityClassArray) () ( MessageEntityPhoneArray) {
	for ,  := range  {
		,  := .(*MessageEntityPhone)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityCashtag returns copy with only MessageEntityCashtag constructors.
func ( MessageEntityClassArray) () ( MessageEntityCashtagArray) {
	for ,  := range  {
		,  := .(*MessageEntityCashtag)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityUnderline returns copy with only MessageEntityUnderline constructors.
func ( MessageEntityClassArray) () ( MessageEntityUnderlineArray) {
	for ,  := range  {
		,  := .(*MessageEntityUnderline)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityStrike returns copy with only MessageEntityStrike constructors.
func ( MessageEntityClassArray) () ( MessageEntityStrikeArray) {
	for ,  := range  {
		,  := .(*MessageEntityStrike)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityBankCard returns copy with only MessageEntityBankCard constructors.
func ( MessageEntityClassArray) () ( MessageEntityBankCardArray) {
	for ,  := range  {
		,  := .(*MessageEntityBankCard)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntitySpoiler returns copy with only MessageEntitySpoiler constructors.
func ( MessageEntityClassArray) () ( MessageEntitySpoilerArray) {
	for ,  := range  {
		,  := .(*MessageEntitySpoiler)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityCustomEmoji returns copy with only MessageEntityCustomEmoji constructors.
func ( MessageEntityClassArray) () ( MessageEntityCustomEmojiArray) {
	for ,  := range  {
		,  := .(*MessageEntityCustomEmoji)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsMessageEntityBlockquote returns copy with only MessageEntityBlockquote constructors.
func ( MessageEntityClassArray) () ( MessageEntityBlockquoteArray) {
	for ,  := range  {
		,  := .(*MessageEntityBlockquote)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// MessageEntityUnknownArray is adapter for slice of MessageEntityUnknown.
type MessageEntityUnknownArray []MessageEntityUnknown

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityMentionArray is adapter for slice of MessageEntityMention.
type MessageEntityMentionArray []MessageEntityMention

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityHashtagArray is adapter for slice of MessageEntityHashtag.
type MessageEntityHashtagArray []MessageEntityHashtag

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityBotCommandArray is adapter for slice of MessageEntityBotCommand.
type MessageEntityBotCommandArray []MessageEntityBotCommand

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityURLArray is adapter for slice of MessageEntityURL.
type MessageEntityURLArray []MessageEntityURL

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityEmailArray is adapter for slice of MessageEntityEmail.
type MessageEntityEmailArray []MessageEntityEmail

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityBoldArray is adapter for slice of MessageEntityBold.
type MessageEntityBoldArray []MessageEntityBold

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityItalicArray is adapter for slice of MessageEntityItalic.
type MessageEntityItalicArray []MessageEntityItalic

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityCodeArray is adapter for slice of MessageEntityCode.
type MessageEntityCodeArray []MessageEntityCode

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityPreArray is adapter for slice of MessageEntityPre.
type MessageEntityPreArray []MessageEntityPre

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityTextURLArray is adapter for slice of MessageEntityTextURL.
type MessageEntityTextURLArray []MessageEntityTextURL

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityMentionNameArray is adapter for slice of MessageEntityMentionName.
type MessageEntityMentionNameArray []MessageEntityMentionName

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputMessageEntityMentionNameArray is adapter for slice of InputMessageEntityMentionName.
type InputMessageEntityMentionNameArray []InputMessageEntityMentionName

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityPhoneArray is adapter for slice of MessageEntityPhone.
type MessageEntityPhoneArray []MessageEntityPhone

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityCashtagArray is adapter for slice of MessageEntityCashtag.
type MessageEntityCashtagArray []MessageEntityCashtag

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityUnderlineArray is adapter for slice of MessageEntityUnderline.
type MessageEntityUnderlineArray []MessageEntityUnderline

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityStrikeArray is adapter for slice of MessageEntityStrike.
type MessageEntityStrikeArray []MessageEntityStrike

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityBankCardArray is adapter for slice of MessageEntityBankCard.
type MessageEntityBankCardArray []MessageEntityBankCard

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntitySpoilerArray is adapter for slice of MessageEntitySpoiler.
type MessageEntitySpoilerArray []MessageEntitySpoiler

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityCustomEmojiArray is adapter for slice of MessageEntityCustomEmoji.
type MessageEntityCustomEmojiArray []MessageEntityCustomEmoji

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// MessageEntityBlockquoteArray is adapter for slice of MessageEntityBlockquote.
type MessageEntityBlockquoteArray []MessageEntityBlockquote

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}