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

// AuthSentCodeTypeClassArray is adapter for slice of AuthSentCodeTypeClass.
type AuthSentCodeTypeClassArray []AuthSentCodeTypeClass

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AsAuthSentCodeTypeApp returns copy with only AuthSentCodeTypeApp constructors.
func ( AuthSentCodeTypeClassArray) () ( AuthSentCodeTypeAppArray) {
	for ,  := range  {
		,  := .(*AuthSentCodeTypeApp)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsAuthSentCodeTypeSMS returns copy with only AuthSentCodeTypeSMS constructors.
func ( AuthSentCodeTypeClassArray) () ( AuthSentCodeTypeSMSArray) {
	for ,  := range  {
		,  := .(*AuthSentCodeTypeSMS)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsAuthSentCodeTypeCall returns copy with only AuthSentCodeTypeCall constructors.
func ( AuthSentCodeTypeClassArray) () ( AuthSentCodeTypeCallArray) {
	for ,  := range  {
		,  := .(*AuthSentCodeTypeCall)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsAuthSentCodeTypeFlashCall returns copy with only AuthSentCodeTypeFlashCall constructors.
func ( AuthSentCodeTypeClassArray) () ( AuthSentCodeTypeFlashCallArray) {
	for ,  := range  {
		,  := .(*AuthSentCodeTypeFlashCall)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsAuthSentCodeTypeMissedCall returns copy with only AuthSentCodeTypeMissedCall constructors.
func ( AuthSentCodeTypeClassArray) () ( AuthSentCodeTypeMissedCallArray) {
	for ,  := range  {
		,  := .(*AuthSentCodeTypeMissedCall)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsAuthSentCodeTypeEmailCode returns copy with only AuthSentCodeTypeEmailCode constructors.
func ( AuthSentCodeTypeClassArray) () ( AuthSentCodeTypeEmailCodeArray) {
	for ,  := range  {
		,  := .(*AuthSentCodeTypeEmailCode)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsAuthSentCodeTypeSetUpEmailRequired returns copy with only AuthSentCodeTypeSetUpEmailRequired constructors.
func ( AuthSentCodeTypeClassArray) () ( AuthSentCodeTypeSetUpEmailRequiredArray) {
	for ,  := range  {
		,  := .(*AuthSentCodeTypeSetUpEmailRequired)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsAuthSentCodeTypeFragmentSMS returns copy with only AuthSentCodeTypeFragmentSMS constructors.
func ( AuthSentCodeTypeClassArray) () ( AuthSentCodeTypeFragmentSMSArray) {
	for ,  := range  {
		,  := .(*AuthSentCodeTypeFragmentSMS)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AsAuthSentCodeTypeFirebaseSMS returns copy with only AuthSentCodeTypeFirebaseSMS constructors.
func ( AuthSentCodeTypeClassArray) () ( AuthSentCodeTypeFirebaseSMSArray) {
	for ,  := range  {
		,  := .(*AuthSentCodeTypeFirebaseSMS)
		if ! {
			continue
		}
		 = append(, *)
	}

	return 
}

// AuthSentCodeTypeAppArray is adapter for slice of AuthSentCodeTypeApp.
type AuthSentCodeTypeAppArray []AuthSentCodeTypeApp

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AuthSentCodeTypeSMSArray is adapter for slice of AuthSentCodeTypeSMS.
type AuthSentCodeTypeSMSArray []AuthSentCodeTypeSMS

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AuthSentCodeTypeCallArray is adapter for slice of AuthSentCodeTypeCall.
type AuthSentCodeTypeCallArray []AuthSentCodeTypeCall

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AuthSentCodeTypeFlashCallArray is adapter for slice of AuthSentCodeTypeFlashCall.
type AuthSentCodeTypeFlashCallArray []AuthSentCodeTypeFlashCall

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AuthSentCodeTypeMissedCallArray is adapter for slice of AuthSentCodeTypeMissedCall.
type AuthSentCodeTypeMissedCallArray []AuthSentCodeTypeMissedCall

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AuthSentCodeTypeEmailCodeArray is adapter for slice of AuthSentCodeTypeEmailCode.
type AuthSentCodeTypeEmailCodeArray []AuthSentCodeTypeEmailCode

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AuthSentCodeTypeSetUpEmailRequiredArray is adapter for slice of AuthSentCodeTypeSetUpEmailRequired.
type AuthSentCodeTypeSetUpEmailRequiredArray []AuthSentCodeTypeSetUpEmailRequired

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AuthSentCodeTypeFragmentSMSArray is adapter for slice of AuthSentCodeTypeFragmentSMS.
type AuthSentCodeTypeFragmentSMSArray []AuthSentCodeTypeFragmentSMS

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}

// AuthSentCodeTypeFirebaseSMSArray is adapter for slice of AuthSentCodeTypeFirebaseSMS.
type AuthSentCodeTypeFirebaseSMSArray []AuthSentCodeTypeFirebaseSMS

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

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

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

	return 
}

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

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

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

	 := *
	 = [0]

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

	return , true
}

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

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

	return , true
}