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

// InputInvoiceClassArray is adapter for slice of InputInvoiceClass.
type InputInvoiceClassArray []InputInvoiceClass

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AsInputInvoiceMessage returns copy with only InputInvoiceMessage constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceMessageArray) {
	for ,  := range  {
		,  := .(*InputInvoiceMessage)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceSlug returns copy with only InputInvoiceSlug constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceSlugArray) {
	for ,  := range  {
		,  := .(*InputInvoiceSlug)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoicePremiumGiftCode returns copy with only InputInvoicePremiumGiftCode constructors.
func ( InputInvoiceClassArray) () ( InputInvoicePremiumGiftCodeArray) {
	for ,  := range  {
		,  := .(*InputInvoicePremiumGiftCode)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceStars returns copy with only InputInvoiceStars constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceStarsArray) {
	for ,  := range  {
		,  := .(*InputInvoiceStars)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceChatInviteSubscription returns copy with only InputInvoiceChatInviteSubscription constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceChatInviteSubscriptionArray) {
	for ,  := range  {
		,  := .(*InputInvoiceChatInviteSubscription)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceStarGift returns copy with only InputInvoiceStarGift constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceStarGiftArray) {
	for ,  := range  {
		,  := .(*InputInvoiceStarGift)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceStarGiftUpgrade returns copy with only InputInvoiceStarGiftUpgrade constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceStarGiftUpgradeArray) {
	for ,  := range  {
		,  := .(*InputInvoiceStarGiftUpgrade)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceStarGiftTransfer returns copy with only InputInvoiceStarGiftTransfer constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceStarGiftTransferArray) {
	for ,  := range  {
		,  := .(*InputInvoiceStarGiftTransfer)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoicePremiumGiftStars returns copy with only InputInvoicePremiumGiftStars constructors.
func ( InputInvoiceClassArray) () ( InputInvoicePremiumGiftStarsArray) {
	for ,  := range  {
		,  := .(*InputInvoicePremiumGiftStars)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceBusinessBotTransferStars returns copy with only InputInvoiceBusinessBotTransferStars constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceBusinessBotTransferStarsArray) {
	for ,  := range  {
		,  := .(*InputInvoiceBusinessBotTransferStars)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceStarGiftResale returns copy with only InputInvoiceStarGiftResale constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceStarGiftResaleArray) {
	for ,  := range  {
		,  := .(*InputInvoiceStarGiftResale)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceStarGiftPrepaidUpgrade returns copy with only InputInvoiceStarGiftPrepaidUpgrade constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceStarGiftPrepaidUpgradeArray) {
	for ,  := range  {
		,  := .(*InputInvoiceStarGiftPrepaidUpgrade)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoicePremiumAuthCode returns copy with only InputInvoicePremiumAuthCode constructors.
func ( InputInvoiceClassArray) () ( InputInvoicePremiumAuthCodeArray) {
	for ,  := range  {
		,  := .(*InputInvoicePremiumAuthCode)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceStarGiftDropOriginalDetails returns copy with only InputInvoiceStarGiftDropOriginalDetails constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceStarGiftDropOriginalDetailsArray) {
	for ,  := range  {
		,  := .(*InputInvoiceStarGiftDropOriginalDetails)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsInputInvoiceStarGiftAuctionBid returns copy with only InputInvoiceStarGiftAuctionBid constructors.
func ( InputInvoiceClassArray) () ( InputInvoiceStarGiftAuctionBidArray) {
	for ,  := range  {
		,  := .(*InputInvoiceStarGiftAuctionBid)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// InputInvoiceMessageArray is adapter for slice of InputInvoiceMessage.
type InputInvoiceMessageArray []InputInvoiceMessage

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceSlugArray is adapter for slice of InputInvoiceSlug.
type InputInvoiceSlugArray []InputInvoiceSlug

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoicePremiumGiftCodeArray is adapter for slice of InputInvoicePremiumGiftCode.
type InputInvoicePremiumGiftCodeArray []InputInvoicePremiumGiftCode

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceStarsArray is adapter for slice of InputInvoiceStars.
type InputInvoiceStarsArray []InputInvoiceStars

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceChatInviteSubscriptionArray is adapter for slice of InputInvoiceChatInviteSubscription.
type InputInvoiceChatInviteSubscriptionArray []InputInvoiceChatInviteSubscription

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceStarGiftArray is adapter for slice of InputInvoiceStarGift.
type InputInvoiceStarGiftArray []InputInvoiceStarGift

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceStarGiftUpgradeArray is adapter for slice of InputInvoiceStarGiftUpgrade.
type InputInvoiceStarGiftUpgradeArray []InputInvoiceStarGiftUpgrade

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceStarGiftTransferArray is adapter for slice of InputInvoiceStarGiftTransfer.
type InputInvoiceStarGiftTransferArray []InputInvoiceStarGiftTransfer

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoicePremiumGiftStarsArray is adapter for slice of InputInvoicePremiumGiftStars.
type InputInvoicePremiumGiftStarsArray []InputInvoicePremiumGiftStars

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceBusinessBotTransferStarsArray is adapter for slice of InputInvoiceBusinessBotTransferStars.
type InputInvoiceBusinessBotTransferStarsArray []InputInvoiceBusinessBotTransferStars

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceStarGiftResaleArray is adapter for slice of InputInvoiceStarGiftResale.
type InputInvoiceStarGiftResaleArray []InputInvoiceStarGiftResale

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceStarGiftPrepaidUpgradeArray is adapter for slice of InputInvoiceStarGiftPrepaidUpgrade.
type InputInvoiceStarGiftPrepaidUpgradeArray []InputInvoiceStarGiftPrepaidUpgrade

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoicePremiumAuthCodeArray is adapter for slice of InputInvoicePremiumAuthCode.
type InputInvoicePremiumAuthCodeArray []InputInvoicePremiumAuthCode

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceStarGiftDropOriginalDetailsArray is adapter for slice of InputInvoiceStarGiftDropOriginalDetails.
type InputInvoiceStarGiftDropOriginalDetailsArray []InputInvoiceStarGiftDropOriginalDetails

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// InputInvoiceStarGiftAuctionBidArray is adapter for slice of InputInvoiceStarGiftAuctionBid.
type InputInvoiceStarGiftAuctionBidArray []InputInvoiceStarGiftAuctionBid

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}