// Code generated by gotdgen, DO NOT EDIT.

package mt

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

// PQInnerData represents TL type `p_q_inner_data#83c95aec`.
type PQInnerData struct {
	// Pq field of PQInnerData.
	Pq []byte
	// P field of PQInnerData.
	P []byte
	// Q field of PQInnerData.
	Q []byte
	// Nonce field of PQInnerData.
	Nonce bin.Int128
	// ServerNonce field of PQInnerData.
	ServerNonce bin.Int128
	// NewNonce field of PQInnerData.
	NewNonce bin.Int256
}

// PQInnerDataTypeID is TL type id of PQInnerData.
const PQInnerDataTypeID = 0x83c95aec

// construct implements constructor of PQInnerDataClass.
func ( PQInnerData) () PQInnerDataClass { return & }

// Ensuring interfaces in compile-time for PQInnerData.
var (
	_ bin.Encoder     = &PQInnerData{}
	_ bin.Decoder     = &PQInnerData{}
	_ bin.BareEncoder = &PQInnerData{}
	_ bin.BareDecoder = &PQInnerData{}

	_ PQInnerDataClass = &PQInnerData{}
)

func ( *PQInnerData) () bool {
	if  == nil {
		return true
	}
	if !(.Pq == nil) {
		return false
	}
	if !(.P == nil) {
		return false
	}
	if !(.Q == nil) {
		return false
	}
	if !(.Nonce == bin.Int128{}) {
		return false
	}
	if !(.ServerNonce == bin.Int128{}) {
		return false
	}
	if !(.NewNonce == bin.Int256{}) {
		return false
	}

	return true
}

// String implements fmt.Stringer.
func ( *PQInnerData) () string {
	if  == nil {
		return "PQInnerData(nil)"
	}
	type  PQInnerData
	return fmt.Sprintf("PQInnerData%+v", (*))
}

// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*PQInnerData) () uint32 {
	return PQInnerDataTypeID
}

// TypeName returns name of type in TL schema.
func (*PQInnerData) () string {
	return "p_q_inner_data"
}

// TypeInfo returns info about TL type.
func ( *PQInnerData) () tdp.Type {
	 := tdp.Type{
		Name: "p_q_inner_data",
		ID:   PQInnerDataTypeID,
	}
	if  == nil {
		.Null = true
		return 
	}
	.Fields = []tdp.Field{
		{
			Name:       "Pq",
			SchemaName: "pq",
		},
		{
			Name:       "P",
			SchemaName: "p",
		},
		{
			Name:       "Q",
			SchemaName: "q",
		},
		{
			Name:       "Nonce",
			SchemaName: "nonce",
		},
		{
			Name:       "ServerNonce",
			SchemaName: "server_nonce",
		},
		{
			Name:       "NewNonce",
			SchemaName: "new_nonce",
		},
	}
	return 
}

// Encode implements bin.Encoder.
func ( *PQInnerData) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't encode p_q_inner_data#83c95aec as nil")
	}
	.PutID(PQInnerDataTypeID)
	return .EncodeBare()
}

// EncodeBare implements bin.BareEncoder.
func ( *PQInnerData) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't encode p_q_inner_data#83c95aec as nil")
	}
	.PutBytes(.Pq)
	.PutBytes(.P)
	.PutBytes(.Q)
	.PutInt128(.Nonce)
	.PutInt128(.ServerNonce)
	.PutInt256(.NewNonce)
	return nil
}

// Decode implements bin.Decoder.
func ( *PQInnerData) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't decode p_q_inner_data#83c95aec to nil")
	}
	if  := .ConsumeID(PQInnerDataTypeID);  != nil {
		return fmt.Errorf("unable to decode p_q_inner_data#83c95aec: %w", )
	}
	return .DecodeBare()
}

// DecodeBare implements bin.BareDecoder.
func ( *PQInnerData) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't decode p_q_inner_data#83c95aec to nil")
	}
	{
		,  := .Bytes()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data#83c95aec: field pq: %w", )
		}
		.Pq = 
	}
	{
		,  := .Bytes()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data#83c95aec: field p: %w", )
		}
		.P = 
	}
	{
		,  := .Bytes()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data#83c95aec: field q: %w", )
		}
		.Q = 
	}
	{
		,  := .Int128()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data#83c95aec: field nonce: %w", )
		}
		.Nonce = 
	}
	{
		,  := .Int128()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data#83c95aec: field server_nonce: %w", )
		}
		.ServerNonce = 
	}
	{
		,  := .Int256()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data#83c95aec: field new_nonce: %w", )
		}
		.NewNonce = 
	}
	return nil
}

// GetPq returns value of Pq field.
func ( *PQInnerData) () ( []byte) {
	if  == nil {
		return
	}
	return .Pq
}

// GetP returns value of P field.
func ( *PQInnerData) () ( []byte) {
	if  == nil {
		return
	}
	return .P
}

// GetQ returns value of Q field.
func ( *PQInnerData) () ( []byte) {
	if  == nil {
		return
	}
	return .Q
}

// GetNonce returns value of Nonce field.
func ( *PQInnerData) () ( bin.Int128) {
	if  == nil {
		return
	}
	return .Nonce
}

// GetServerNonce returns value of ServerNonce field.
func ( *PQInnerData) () ( bin.Int128) {
	if  == nil {
		return
	}
	return .ServerNonce
}

// GetNewNonce returns value of NewNonce field.
func ( *PQInnerData) () ( bin.Int256) {
	if  == nil {
		return
	}
	return .NewNonce
}

// PQInnerDataDC represents TL type `p_q_inner_data_dc#a9f55f95`.
type PQInnerDataDC struct {
	// Pq field of PQInnerDataDC.
	Pq []byte
	// P field of PQInnerDataDC.
	P []byte
	// Q field of PQInnerDataDC.
	Q []byte
	// Nonce field of PQInnerDataDC.
	Nonce bin.Int128
	// ServerNonce field of PQInnerDataDC.
	ServerNonce bin.Int128
	// NewNonce field of PQInnerDataDC.
	NewNonce bin.Int256
	// DC field of PQInnerDataDC.
	DC int
}

// PQInnerDataDCTypeID is TL type id of PQInnerDataDC.
const PQInnerDataDCTypeID = 0xa9f55f95

// construct implements constructor of PQInnerDataClass.
func ( PQInnerDataDC) () PQInnerDataClass { return & }

// Ensuring interfaces in compile-time for PQInnerDataDC.
var (
	_ bin.Encoder     = &PQInnerDataDC{}
	_ bin.Decoder     = &PQInnerDataDC{}
	_ bin.BareEncoder = &PQInnerDataDC{}
	_ bin.BareDecoder = &PQInnerDataDC{}

	_ PQInnerDataClass = &PQInnerDataDC{}
)

func ( *PQInnerDataDC) () bool {
	if  == nil {
		return true
	}
	if !(.Pq == nil) {
		return false
	}
	if !(.P == nil) {
		return false
	}
	if !(.Q == nil) {
		return false
	}
	if !(.Nonce == bin.Int128{}) {
		return false
	}
	if !(.ServerNonce == bin.Int128{}) {
		return false
	}
	if !(.NewNonce == bin.Int256{}) {
		return false
	}
	if !(.DC == 0) {
		return false
	}

	return true
}

// String implements fmt.Stringer.
func ( *PQInnerDataDC) () string {
	if  == nil {
		return "PQInnerDataDC(nil)"
	}
	type  PQInnerDataDC
	return fmt.Sprintf("PQInnerDataDC%+v", (*))
}

// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*PQInnerDataDC) () uint32 {
	return PQInnerDataDCTypeID
}

// TypeName returns name of type in TL schema.
func (*PQInnerDataDC) () string {
	return "p_q_inner_data_dc"
}

// TypeInfo returns info about TL type.
func ( *PQInnerDataDC) () tdp.Type {
	 := tdp.Type{
		Name: "p_q_inner_data_dc",
		ID:   PQInnerDataDCTypeID,
	}
	if  == nil {
		.Null = true
		return 
	}
	.Fields = []tdp.Field{
		{
			Name:       "Pq",
			SchemaName: "pq",
		},
		{
			Name:       "P",
			SchemaName: "p",
		},
		{
			Name:       "Q",
			SchemaName: "q",
		},
		{
			Name:       "Nonce",
			SchemaName: "nonce",
		},
		{
			Name:       "ServerNonce",
			SchemaName: "server_nonce",
		},
		{
			Name:       "NewNonce",
			SchemaName: "new_nonce",
		},
		{
			Name:       "DC",
			SchemaName: "dc",
		},
	}
	return 
}

// Encode implements bin.Encoder.
func ( *PQInnerDataDC) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't encode p_q_inner_data_dc#a9f55f95 as nil")
	}
	.PutID(PQInnerDataDCTypeID)
	return .EncodeBare()
}

// EncodeBare implements bin.BareEncoder.
func ( *PQInnerDataDC) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't encode p_q_inner_data_dc#a9f55f95 as nil")
	}
	.PutBytes(.Pq)
	.PutBytes(.P)
	.PutBytes(.Q)
	.PutInt128(.Nonce)
	.PutInt128(.ServerNonce)
	.PutInt256(.NewNonce)
	.PutInt(.DC)
	return nil
}

// Decode implements bin.Decoder.
func ( *PQInnerDataDC) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't decode p_q_inner_data_dc#a9f55f95 to nil")
	}
	if  := .ConsumeID(PQInnerDataDCTypeID);  != nil {
		return fmt.Errorf("unable to decode p_q_inner_data_dc#a9f55f95: %w", )
	}
	return .DecodeBare()
}

// DecodeBare implements bin.BareDecoder.
func ( *PQInnerDataDC) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't decode p_q_inner_data_dc#a9f55f95 to nil")
	}
	{
		,  := .Bytes()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_dc#a9f55f95: field pq: %w", )
		}
		.Pq = 
	}
	{
		,  := .Bytes()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_dc#a9f55f95: field p: %w", )
		}
		.P = 
	}
	{
		,  := .Bytes()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_dc#a9f55f95: field q: %w", )
		}
		.Q = 
	}
	{
		,  := .Int128()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_dc#a9f55f95: field nonce: %w", )
		}
		.Nonce = 
	}
	{
		,  := .Int128()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_dc#a9f55f95: field server_nonce: %w", )
		}
		.ServerNonce = 
	}
	{
		,  := .Int256()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_dc#a9f55f95: field new_nonce: %w", )
		}
		.NewNonce = 
	}
	{
		,  := .Int()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_dc#a9f55f95: field dc: %w", )
		}
		.DC = 
	}
	return nil
}

// GetPq returns value of Pq field.
func ( *PQInnerDataDC) () ( []byte) {
	if  == nil {
		return
	}
	return .Pq
}

// GetP returns value of P field.
func ( *PQInnerDataDC) () ( []byte) {
	if  == nil {
		return
	}
	return .P
}

// GetQ returns value of Q field.
func ( *PQInnerDataDC) () ( []byte) {
	if  == nil {
		return
	}
	return .Q
}

// GetNonce returns value of Nonce field.
func ( *PQInnerDataDC) () ( bin.Int128) {
	if  == nil {
		return
	}
	return .Nonce
}

// GetServerNonce returns value of ServerNonce field.
func ( *PQInnerDataDC) () ( bin.Int128) {
	if  == nil {
		return
	}
	return .ServerNonce
}

// GetNewNonce returns value of NewNonce field.
func ( *PQInnerDataDC) () ( bin.Int256) {
	if  == nil {
		return
	}
	return .NewNonce
}

// GetDC returns value of DC field.
func ( *PQInnerDataDC) () ( int) {
	if  == nil {
		return
	}
	return .DC
}

// PQInnerDataTempDC represents TL type `p_q_inner_data_temp_dc#56fddf88`.
type PQInnerDataTempDC struct {
	// Pq field of PQInnerDataTempDC.
	Pq []byte
	// P field of PQInnerDataTempDC.
	P []byte
	// Q field of PQInnerDataTempDC.
	Q []byte
	// Nonce field of PQInnerDataTempDC.
	Nonce bin.Int128
	// ServerNonce field of PQInnerDataTempDC.
	ServerNonce bin.Int128
	// NewNonce field of PQInnerDataTempDC.
	NewNonce bin.Int256
	// DC field of PQInnerDataTempDC.
	DC int
	// ExpiresIn field of PQInnerDataTempDC.
	ExpiresIn int
}

// PQInnerDataTempDCTypeID is TL type id of PQInnerDataTempDC.
const PQInnerDataTempDCTypeID = 0x56fddf88

// construct implements constructor of PQInnerDataClass.
func ( PQInnerDataTempDC) () PQInnerDataClass { return & }

// Ensuring interfaces in compile-time for PQInnerDataTempDC.
var (
	_ bin.Encoder     = &PQInnerDataTempDC{}
	_ bin.Decoder     = &PQInnerDataTempDC{}
	_ bin.BareEncoder = &PQInnerDataTempDC{}
	_ bin.BareDecoder = &PQInnerDataTempDC{}

	_ PQInnerDataClass = &PQInnerDataTempDC{}
)

func ( *PQInnerDataTempDC) () bool {
	if  == nil {
		return true
	}
	if !(.Pq == nil) {
		return false
	}
	if !(.P == nil) {
		return false
	}
	if !(.Q == nil) {
		return false
	}
	if !(.Nonce == bin.Int128{}) {
		return false
	}
	if !(.ServerNonce == bin.Int128{}) {
		return false
	}
	if !(.NewNonce == bin.Int256{}) {
		return false
	}
	if !(.DC == 0) {
		return false
	}
	if !(.ExpiresIn == 0) {
		return false
	}

	return true
}

// String implements fmt.Stringer.
func ( *PQInnerDataTempDC) () string {
	if  == nil {
		return "PQInnerDataTempDC(nil)"
	}
	type  PQInnerDataTempDC
	return fmt.Sprintf("PQInnerDataTempDC%+v", (*))
}

// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*PQInnerDataTempDC) () uint32 {
	return PQInnerDataTempDCTypeID
}

// TypeName returns name of type in TL schema.
func (*PQInnerDataTempDC) () string {
	return "p_q_inner_data_temp_dc"
}

// TypeInfo returns info about TL type.
func ( *PQInnerDataTempDC) () tdp.Type {
	 := tdp.Type{
		Name: "p_q_inner_data_temp_dc",
		ID:   PQInnerDataTempDCTypeID,
	}
	if  == nil {
		.Null = true
		return 
	}
	.Fields = []tdp.Field{
		{
			Name:       "Pq",
			SchemaName: "pq",
		},
		{
			Name:       "P",
			SchemaName: "p",
		},
		{
			Name:       "Q",
			SchemaName: "q",
		},
		{
			Name:       "Nonce",
			SchemaName: "nonce",
		},
		{
			Name:       "ServerNonce",
			SchemaName: "server_nonce",
		},
		{
			Name:       "NewNonce",
			SchemaName: "new_nonce",
		},
		{
			Name:       "DC",
			SchemaName: "dc",
		},
		{
			Name:       "ExpiresIn",
			SchemaName: "expires_in",
		},
	}
	return 
}

// Encode implements bin.Encoder.
func ( *PQInnerDataTempDC) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't encode p_q_inner_data_temp_dc#56fddf88 as nil")
	}
	.PutID(PQInnerDataTempDCTypeID)
	return .EncodeBare()
}

// EncodeBare implements bin.BareEncoder.
func ( *PQInnerDataTempDC) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't encode p_q_inner_data_temp_dc#56fddf88 as nil")
	}
	.PutBytes(.Pq)
	.PutBytes(.P)
	.PutBytes(.Q)
	.PutInt128(.Nonce)
	.PutInt128(.ServerNonce)
	.PutInt256(.NewNonce)
	.PutInt(.DC)
	.PutInt(.ExpiresIn)
	return nil
}

// Decode implements bin.Decoder.
func ( *PQInnerDataTempDC) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't decode p_q_inner_data_temp_dc#56fddf88 to nil")
	}
	if  := .ConsumeID(PQInnerDataTempDCTypeID);  != nil {
		return fmt.Errorf("unable to decode p_q_inner_data_temp_dc#56fddf88: %w", )
	}
	return .DecodeBare()
}

// DecodeBare implements bin.BareDecoder.
func ( *PQInnerDataTempDC) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("can't decode p_q_inner_data_temp_dc#56fddf88 to nil")
	}
	{
		,  := .Bytes()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_temp_dc#56fddf88: field pq: %w", )
		}
		.Pq = 
	}
	{
		,  := .Bytes()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_temp_dc#56fddf88: field p: %w", )
		}
		.P = 
	}
	{
		,  := .Bytes()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_temp_dc#56fddf88: field q: %w", )
		}
		.Q = 
	}
	{
		,  := .Int128()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_temp_dc#56fddf88: field nonce: %w", )
		}
		.Nonce = 
	}
	{
		,  := .Int128()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_temp_dc#56fddf88: field server_nonce: %w", )
		}
		.ServerNonce = 
	}
	{
		,  := .Int256()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_temp_dc#56fddf88: field new_nonce: %w", )
		}
		.NewNonce = 
	}
	{
		,  := .Int()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_temp_dc#56fddf88: field dc: %w", )
		}
		.DC = 
	}
	{
		,  := .Int()
		if  != nil {
			return fmt.Errorf("unable to decode p_q_inner_data_temp_dc#56fddf88: field expires_in: %w", )
		}
		.ExpiresIn = 
	}
	return nil
}

// GetPq returns value of Pq field.
func ( *PQInnerDataTempDC) () ( []byte) {
	if  == nil {
		return
	}
	return .Pq
}

// GetP returns value of P field.
func ( *PQInnerDataTempDC) () ( []byte) {
	if  == nil {
		return
	}
	return .P
}

// GetQ returns value of Q field.
func ( *PQInnerDataTempDC) () ( []byte) {
	if  == nil {
		return
	}
	return .Q
}

// GetNonce returns value of Nonce field.
func ( *PQInnerDataTempDC) () ( bin.Int128) {
	if  == nil {
		return
	}
	return .Nonce
}

// GetServerNonce returns value of ServerNonce field.
func ( *PQInnerDataTempDC) () ( bin.Int128) {
	if  == nil {
		return
	}
	return .ServerNonce
}

// GetNewNonce returns value of NewNonce field.
func ( *PQInnerDataTempDC) () ( bin.Int256) {
	if  == nil {
		return
	}
	return .NewNonce
}

// GetDC returns value of DC field.
func ( *PQInnerDataTempDC) () ( int) {
	if  == nil {
		return
	}
	return .DC
}

// GetExpiresIn returns value of ExpiresIn field.
func ( *PQInnerDataTempDC) () ( int) {
	if  == nil {
		return
	}
	return .ExpiresIn
}

// PQInnerDataClassName is schema name of PQInnerDataClass.
const PQInnerDataClassName = "P_Q_inner_data"

// PQInnerDataClass represents P_Q_inner_data generic type.
//
// Example:
//
//	g, err := mt.DecodePQInnerData(buf)
//	if err != nil {
//	    panic(err)
//	}
//	switch v := g.(type) {
//	case *mt.PQInnerData: // p_q_inner_data#83c95aec
//	case *mt.PQInnerDataDC: // p_q_inner_data_dc#a9f55f95
//	case *mt.PQInnerDataTempDC: // p_q_inner_data_temp_dc#56fddf88
//	default: panic(v)
//	}
type PQInnerDataClass interface {
	bin.Encoder
	bin.Decoder
	bin.BareEncoder
	bin.BareDecoder
	construct() PQInnerDataClass

	// TypeID returns type id in TL schema.
	//
	// See https://core.telegram.org/mtproto/TL-tl#remarks.
	TypeID() uint32
	// TypeName returns name of type in TL schema.
	TypeName() string
	// String implements fmt.Stringer.
	String() string
	// Zero returns true if current object has a zero value.
	Zero() bool

	// Pq field of PQInnerData.
	GetPq() (value []byte)
	// P field of PQInnerData.
	GetP() (value []byte)
	// Q field of PQInnerData.
	GetQ() (value []byte)
	// Nonce field of PQInnerData.
	GetNonce() (value bin.Int128)
	// ServerNonce field of PQInnerData.
	GetServerNonce() (value bin.Int128)
	// NewNonce field of PQInnerData.
	GetNewNonce() (value bin.Int256)
}

// DecodePQInnerData implements binary de-serialization for PQInnerDataClass.
func ( *bin.Buffer) (PQInnerDataClass, error) {
	,  := .PeekID()
	if  != nil {
		return nil, 
	}
	switch  {
	case PQInnerDataTypeID:
		// Decoding p_q_inner_data#83c95aec.
		 := PQInnerData{}
		if  := .Decode();  != nil {
			return nil, fmt.Errorf("unable to decode PQInnerDataClass: %w", )
		}
		return &, nil
	case PQInnerDataDCTypeID:
		// Decoding p_q_inner_data_dc#a9f55f95.
		 := PQInnerDataDC{}
		if  := .Decode();  != nil {
			return nil, fmt.Errorf("unable to decode PQInnerDataClass: %w", )
		}
		return &, nil
	case PQInnerDataTempDCTypeID:
		// Decoding p_q_inner_data_temp_dc#56fddf88.
		 := PQInnerDataTempDC{}
		if  := .Decode();  != nil {
			return nil, fmt.Errorf("unable to decode PQInnerDataClass: %w", )
		}
		return &, nil
	default:
		return nil, fmt.Errorf("unable to decode PQInnerDataClass: %w", bin.NewUnexpectedID())
	}
}

// PQInnerData boxes the PQInnerDataClass providing a helper.
type PQInnerDataBox struct {
	P_Q_inner_data PQInnerDataClass
}

// Decode implements bin.Decoder for PQInnerDataBox.
func ( *PQInnerDataBox) ( *bin.Buffer) error {
	if  == nil {
		return fmt.Errorf("unable to decode PQInnerDataBox to nil")
	}
	,  := DecodePQInnerData()
	if  != nil {
		return fmt.Errorf("unable to decode boxed value: %w", )
	}
	.P_Q_inner_data = 
	return nil
}

// Encode implements bin.Encode for PQInnerDataBox.
func ( *PQInnerDataBox) ( *bin.Buffer) error {
	if  == nil || .P_Q_inner_data == nil {
		return fmt.Errorf("unable to encode PQInnerDataClass as nil")
	}
	return .P_Q_inner_data.Encode()
}