// This C++ source file was generated by the TTCN-3 compiler
// of the TTCN-3 Test Executor version 11.1.0
// The generation of user and time information were disabled by the -D flag.

// Copyright (c) 2000-2025 Ericsson Telecom AB

// Do not edit this file unless you know what you are doing.

/* Including header files */

#include "BSSGP_Types.hh"

namespace BSSGP__Types {

/* Literal string constants */

const unsigned char bs_1_bits[] = { 0 },
bs_2_bits[] = { 0 },
bs_3_bits[] = { 8 },
bs_16_bits[] = { 4 },
bs_4_bits[] = { 4 },
bs_5_bits[] = { 12 },
bs_15_bits[] = { 2 },
bs_6_bits[] = { 2 },
bs_7_bits[] = { 10 },
bs_17_bits[] = { 6 },
bs_8_bits[] = { 6 },
bs_9_bits[] = { 14 },
bs_0_bits[] = { 1 },
bs_10_bits[] = { 1 },
bs_11_bits[] = { 9 },
bs_12_bits[] = { 5 },
bs_13_bits[] = { 13 },
bs_14_bits[] = { 15 };
extern const BITSTRING bs_1(1, bs_1_bits),
bs_2(4, bs_2_bits),
bs_3(4, bs_3_bits),
bs_16(3, bs_16_bits),
bs_4(4, bs_4_bits),
bs_5(4, bs_5_bits),
bs_15(3, bs_15_bits),
bs_6(4, bs_6_bits),
bs_7(4, bs_7_bits),
bs_17(3, bs_17_bits),
bs_8(4, bs_8_bits),
bs_9(4, bs_9_bits),
bs_0(1, bs_0_bits),
bs_10(4, bs_10_bits),
bs_11(4, bs_11_bits),
bs_12(4, bs_12_bits),
bs_13(4, bs_13_bits),
bs_14(4, bs_14_bits);
const unsigned char hs_0_nibbles[] = { 0 },
hs_1_nibbles[] = { 1 },
hs_2_nibbles[] = { 2 },
hs_3_nibbles[] = { 3 };
extern const HEXSTRING hs_0(1, hs_0_nibbles),
hs_1(1, hs_1_nibbles),
hs_2(1, hs_2_nibbles),
hs_3(1, hs_3_nibbles);
const unsigned char os_19_octets[] = { 0 },
os_26_octets[] = { 1 },
os_27_octets[] = { 2 },
os_59_octets[] = { 3 },
os_30_octets[] = { 4 },
os_31_octets[] = { 5 },
os_37_octets[] = { 6 },
os_41_octets[] = { 7 },
os_21_octets[] = { 8 },
os_38_octets[] = { 9 },
os_3_octets[] = { 10 },
os_39_octets[] = { 11 },
os_46_octets[] = { 12 },
os_4_octets[] = { 13 },
os_20_octets[] = { 14 },
os_47_octets[] = { 15 },
os_32_octets[] = { 16 },
os_49_octets[] = { 17 },
os_50_octets[] = { 18 },
os_1_octets[] = { 19 },
os_53_octets[] = { 20 },
os_51_octets[] = { 21 },
os_0_octets[] = { 22 },
os_2_octets[] = { 23 },
os_35_octets[] = { 24 },
os_44_octets[] = { 25 },
os_43_octets[] = { 26 },
os_33_octets[] = { 27 },
os_60_octets[] = { 28 },
os_45_octets[] = { 29 },
os_42_octets[] = { 30 },
os_5_octets[] = { 31 },
os_36_octets[] = { 32 },
os_68_octets[] = { 33 },
os_72_octets[] = { 34 },
os_73_octets[] = { 35 },
os_69_octets[] = { 36 },
os_56_octets[] = { 37 },
os_22_octets[] = { 38 },
os_7_octets[] = { 39 },
os_6_octets[] = { 40 },
os_63_octets[] = { 41 },
os_55_octets[] = { 42 },
os_57_octets[] = { 43 },
os_58_octets[] = { 44 },
os_65_octets[] = { 45 },
os_66_octets[] = { 46 },
os_34_octets[] = { 58 },
os_70_octets[] = { 59 },
os_61_octets[] = { 60 },
os_8_octets[] = { 61 },
os_54_octets[] = { 62 },
os_131_octets[] = { 63 },
os_74_octets[] = { 64 },
os_67_octets[] = { 65 },
os_114_octets[] = { 66 },
os_115_octets[] = { 67 },
os_122_octets[] = { 68 },
os_123_octets[] = { 69 },
os_124_octets[] = { 70 },
os_117_octets[] = { 71 },
os_125_octets[] = { 72 },
os_116_octets[] = { 73 },
os_130_octets[] = { 74 },
os_133_octets[] = { 75 },
os_134_octets[] = { 76 },
os_137_octets[] = { 77 },
os_136_octets[] = { 78 },
os_135_octets[] = { 79 },
os_75_octets[] = { 80 },
os_78_octets[] = { 81 },
os_64_octets[] = { 82 },
os_40_octets[] = { 83 },
os_79_octets[] = { 84 },
os_80_octets[] = { 85 },
os_81_octets[] = { 86 },
os_82_octets[] = { 87 },
os_83_octets[] = { 88 },
os_100_octets[] = { 89 },
os_107_octets[] = { 90 },
os_108_octets[] = { 91 },
os_28_octets[] = { 92 },
os_29_octets[] = { 93 },
os_111_octets[] = { 94 },
os_141_octets[] = { 95 },
os_121_octets[] = { 96 },
os_128_octets[] = { 97 },
os_129_octets[] = { 98 },
os_132_octets[] = { 99 },
os_92_octets[] = { 100 },
os_105_octets[] = { 101 },
os_110_octets[] = { 102 },
os_109_octets[] = { 103 },
os_101_octets[] = { 104 },
os_71_octets[] = { 105 },
os_94_octets[] = { 106 },
os_106_octets[] = { 107 },
os_93_octets[] = { 108 },
os_84_octets[] = { 109 },
os_85_octets[] = { 110 },
os_86_octets[] = { 111 },
os_118_octets[] = { 112 },
os_139_octets[] = { 113 },
os_140_octets[] = { 114 },
os_76_octets[] = { 115 },
os_102_octets[] = { 116 },
os_87_octets[] = { 117 },
os_103_octets[] = { 118 },
os_95_octets[] = { 119 },
os_126_octets[] = { 120 },
os_104_octets[] = { 121 },
os_88_octets[] = { 122 },
os_120_octets[] = { 123 },
os_119_octets[] = { 124 },
os_127_octets[] = { 125 },
os_62_octets[] = { 126 },
os_96_octets[] = { 127 },
os_77_octets[] = { 128 },
os_10_octets[] = { 129 },
os_112_octets[] = { 130 },
os_97_octets[] = { 131 },
os_138_octets[] = { 132 },
os_98_octets[] = { 133 },
os_99_octets[] = { 134 },
os_23_octets[] = { 135 },
os_11_octets[] = { 136 },
os_12_octets[] = { 137 },
os_13_octets[] = { 138 },
os_89_octets[] = { 139 },
os_14_octets[] = { 140 },
os_15_octets[] = { 141 },
os_24_octets[] = { 142 },
os_113_octets[] = { 143 },
os_90_octets[] = { 144 },
os_91_octets[] = { 145 },
os_16_octets[] = { 146 },
os_48_octets[] = { 147 },
os_17_octets[] = { 148 },
os_18_octets[] = { 149 },
os_25_octets[] = { 150 },
os_52_octets[] = { 151 },
os_9_octets[] = { 153 };
extern const OCTETSTRING os_19(1, os_19_octets),
os_26(1, os_26_octets),
os_27(1, os_27_octets),
os_59(1, os_59_octets),
os_30(1, os_30_octets),
os_31(1, os_31_octets),
os_37(1, os_37_octets),
os_41(1, os_41_octets),
os_21(1, os_21_octets),
os_38(1, os_38_octets),
os_3(1, os_3_octets),
os_39(1, os_39_octets),
os_46(1, os_46_octets),
os_4(1, os_4_octets),
os_20(1, os_20_octets),
os_47(1, os_47_octets),
os_32(1, os_32_octets),
os_49(1, os_49_octets),
os_50(1, os_50_octets),
os_1(1, os_1_octets),
os_53(1, os_53_octets),
os_51(1, os_51_octets),
os_0(1, os_0_octets),
os_2(1, os_2_octets),
os_35(1, os_35_octets),
os_44(1, os_44_octets),
os_43(1, os_43_octets),
os_33(1, os_33_octets),
os_60(1, os_60_octets),
os_45(1, os_45_octets),
os_42(1, os_42_octets),
os_5(1, os_5_octets),
os_36(1, os_36_octets),
os_68(1, os_68_octets),
os_72(1, os_72_octets),
os_73(1, os_73_octets),
os_69(1, os_69_octets),
os_56(1, os_56_octets),
os_22(1, os_22_octets),
os_7(1, os_7_octets),
os_6(1, os_6_octets),
os_63(1, os_63_octets),
os_55(1, os_55_octets),
os_57(1, os_57_octets),
os_58(1, os_58_octets),
os_65(1, os_65_octets),
os_66(1, os_66_octets),
os_34(1, os_34_octets),
os_70(1, os_70_octets),
os_61(1, os_61_octets),
os_8(1, os_8_octets),
os_54(1, os_54_octets),
os_131(1, os_131_octets),
os_74(1, os_74_octets),
os_67(1, os_67_octets),
os_114(1, os_114_octets),
os_115(1, os_115_octets),
os_122(1, os_122_octets),
os_123(1, os_123_octets),
os_124(1, os_124_octets),
os_117(1, os_117_octets),
os_125(1, os_125_octets),
os_116(1, os_116_octets),
os_130(1, os_130_octets),
os_133(1, os_133_octets),
os_134(1, os_134_octets),
os_137(1, os_137_octets),
os_136(1, os_136_octets),
os_135(1, os_135_octets),
os_75(1, os_75_octets),
os_78(1, os_78_octets),
os_64(1, os_64_octets),
os_40(1, os_40_octets),
os_79(1, os_79_octets),
os_80(1, os_80_octets),
os_81(1, os_81_octets),
os_82(1, os_82_octets),
os_83(1, os_83_octets),
os_100(1, os_100_octets),
os_107(1, os_107_octets),
os_108(1, os_108_octets),
os_28(1, os_28_octets),
os_29(1, os_29_octets),
os_111(1, os_111_octets),
os_141(1, os_141_octets),
os_121(1, os_121_octets),
os_128(1, os_128_octets),
os_129(1, os_129_octets),
os_132(1, os_132_octets),
os_92(1, os_92_octets),
os_105(1, os_105_octets),
os_110(1, os_110_octets),
os_109(1, os_109_octets),
os_101(1, os_101_octets),
os_71(1, os_71_octets),
os_94(1, os_94_octets),
os_106(1, os_106_octets),
os_93(1, os_93_octets),
os_84(1, os_84_octets),
os_85(1, os_85_octets),
os_86(1, os_86_octets),
os_118(1, os_118_octets),
os_139(1, os_139_octets),
os_140(1, os_140_octets),
os_76(1, os_76_octets),
os_102(1, os_102_octets),
os_87(1, os_87_octets),
os_103(1, os_103_octets),
os_95(1, os_95_octets),
os_126(1, os_126_octets),
os_104(1, os_104_octets),
os_88(1, os_88_octets),
os_120(1, os_120_octets),
os_119(1, os_119_octets),
os_127(1, os_127_octets),
os_62(1, os_62_octets),
os_96(1, os_96_octets),
os_77(1, os_77_octets),
os_10(1, os_10_octets),
os_112(1, os_112_octets),
os_97(1, os_97_octets),
os_138(1, os_138_octets),
os_98(1, os_98_octets),
os_99(1, os_99_octets),
os_23(1, os_23_octets),
os_11(1, os_11_octets),
os_12(1, os_12_octets),
os_13(1, os_13_octets),
os_89(1, os_89_octets),
os_14(1, os_14_octets),
os_15(1, os_15_octets),
os_24(1, os_24_octets),
os_113(1, os_113_octets),
os_90(1, os_90_octets),
os_91(1, os_91_octets),
os_16(1, os_16_octets),
os_48(1, os_48_octets),
os_17(1, os_17_octets),
os_18(1, os_18_octets),
os_25(1, os_25_octets),
os_52(1, os_52_octets),
os_9(1, os_9_octets);
const unsigned char pp_0[] = { 0xff };
const unsigned char module_checksum[] = { 0x65, 0xa7, 0xa1, 0xcc, 0x8f, 0x35, 0x60, 0x87, 0x51, 0xec, 0xc5, 0xff, 0x4f, 0x41, 0xd4, 0xe8 };

/* Global variable definitions */

const TTCN_RAWdescriptor_t LIN2__2a_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LIN2__2a
const TTCN_Typedescriptor_t LIN2__2a_descr_ = { "@BSSGP_Types.LIN2_2a", NULL, &LIN2__2a_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t LIN2__2a_length1_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LIN2__2a_length1_xer_ = { {"length1>\n", "length1>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t LIN2__2a_length1_descr_ = { "@BSSGP_Types.LIN2_2a.length1", &INTEGER_ber_, &LIN2__2a_length1_raw_, &INTEGER_text_, &LIN2__2a_length1_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LIN2__2a_length1_default_coding("RAW");
const TTCN_RAWdescriptor_t LIN2__2a_length2_raw_ = {15,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LIN2__2a_length2_xer_ = { {"length2>\n", "length2>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t LIN2__2a_length2_descr_ = { "@BSSGP_Types.LIN2_2a.length2", &INTEGER_ber_, &LIN2__2a_length2_raw_, &INTEGER_text_, &LIN2__2a_length2_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LIN2__2a_length2_default_coding("RAW");
UNIVERSAL_CHARSTRING LIN2__2a_default_coding("RAW");
const XERdescriptor_t       Alignment__octets_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Alignment__octets_iEI_oer_ext_arr_[0] = {};
const int Alignment__octets_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Alignment__octets_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Alignment__octets_iEI_oer_ext_arr_, 0, Alignment__octets_iEI_oer_p_};
const TTCN_Typedescriptor_t Alignment__octets_iEI_descr_ = { "@BSSGP_Types.Alignment_octets.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Alignment__octets_iEI_xer_, &OCTETSTRING_json_, &Alignment__octets_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Alignment__octets_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Alignment__octets_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Alignment__octets_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Alignment__octets_ext_descr_ = { "@BSSGP_Types.Alignment_octets.ext", &BITSTRING_ber_, &Alignment__octets_ext_raw_, NULL, &Alignment__octets_ext_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Alignment__octets_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Alignment__octets_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Alignment__octets_lengthIndicator
const TTCN_Typedescriptor_t Alignment__octets_lengthIndicator_descr_ = { "@BSSGP_Types.Alignment_octets.lengthIndicator", NULL, &Alignment__octets_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Alignment__octets_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Alignment__octets_spare__octet_xer_ = { {"spare_octet>\n", "spare_octet>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Alignment__octets_spare__octet_oer_ext_arr_[0] = {};
const int Alignment__octets_spare__octet_oer_p_[0] = {};
const TTCN_OERdescriptor_t Alignment__octets_spare__octet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alignment__octets_spare__octet_oer_ext_arr_, 0, Alignment__octets_spare__octet_oer_p_};
const TTCN_Typedescriptor_t Alignment__octets_spare__octet_descr_ = { "@BSSGP_Types.Alignment_octets.spare_octet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &Alignment__octets_spare__octet_xer_, &OCTETSTRING_json_, &Alignment__octets_spare__octet_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Alignment__octets_spare__octet_default_coding("RAW");
const TTCN_RAWdescriptor_t Alignment__octets_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Alignment__octets
const TTCN_Typedescriptor_t Alignment__octets_descr_ = { "@BSSGP_Types.Alignment_octets", NULL, &Alignment__octets_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Alignment__octets_default_coding("RAW");
const XERdescriptor_t       Bmax__default__MS_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Bmax__default__MS_iEI_oer_ext_arr_[0] = {};
const int Bmax__default__MS_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Bmax__default__MS_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Bmax__default__MS_iEI_oer_ext_arr_, 0, Bmax__default__MS_iEI_oer_p_};
const TTCN_Typedescriptor_t Bmax__default__MS_iEI_descr_ = { "@BSSGP_Types.Bmax_default_MS.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Bmax__default__MS_iEI_xer_, &OCTETSTRING_json_, &Bmax__default__MS_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bmax__default__MS_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Bmax__default__MS_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Bmax__default__MS_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Bmax__default__MS_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Bmax__default__MS_ext_descr_ = { "@BSSGP_Types.Bmax_default_MS.ext", &BITSTRING_ber_, &Bmax__default__MS_ext_raw_, NULL, &Bmax__default__MS_ext_xer_, &BITSTRING_json_, &Bmax__default__MS_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bmax__default__MS_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Bmax__default__MS_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Bmax__default__MS_lengthIndicator
const TTCN_Typedescriptor_t Bmax__default__MS_lengthIndicator_descr_ = { "@BSSGP_Types.Bmax_default_MS.lengthIndicator", NULL, &Bmax__default__MS_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bmax__default__MS_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Bmax__default__MS_bmax_xer_ = { {"bmax>\n", "bmax>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Bmax__default__MS_bmax_oer_ext_arr_[0] = {};
const int Bmax__default__MS_bmax_oer_p_[0] = {};
const TTCN_OERdescriptor_t Bmax__default__MS_bmax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Bmax__default__MS_bmax_oer_ext_arr_, 0, Bmax__default__MS_bmax_oer_p_};
const TTCN_Typedescriptor_t Bmax__default__MS_bmax_descr_ = { "@BSSGP_Types.Bmax_default_MS.bmax", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Bmax__default__MS_bmax_xer_, &OCTETSTRING_json_, &Bmax__default__MS_bmax_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bmax__default__MS_bmax_default_coding("RAW");
const TTCN_RAWdescriptor_t Bmax__default__MS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Bmax__default__MS
const TTCN_Typedescriptor_t Bmax__default__MS_descr_ = { "@BSSGP_Types.Bmax_default_MS", NULL, &Bmax__default__MS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bmax__default__MS_default_coding("RAW");
const XERdescriptor_t       BSS__Area__Indication_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int BSS__Area__Indication_iEI_oer_ext_arr_[0] = {};
const int BSS__Area__Indication_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t BSS__Area__Indication_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BSS__Area__Indication_iEI_oer_ext_arr_, 0, BSS__Area__Indication_iEI_oer_p_};
const TTCN_Typedescriptor_t BSS__Area__Indication_iEI_descr_ = { "@BSSGP_Types.BSS_Area_Indication.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &BSS__Area__Indication_iEI_xer_, &OCTETSTRING_json_, &BSS__Area__Indication_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BSS__Area__Indication_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t BSS__Area__Indication_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       BSS__Area__Indication_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t BSS__Area__Indication_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t BSS__Area__Indication_ext_descr_ = { "@BSSGP_Types.BSS_Area_Indication.ext", &BITSTRING_ber_, &BSS__Area__Indication_ext_raw_, NULL, &BSS__Area__Indication_ext_xer_, &BITSTRING_json_, &BSS__Area__Indication_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BSS__Area__Indication_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t BSS__Area__Indication_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for BSS__Area__Indication_lengthIndicator
const TTCN_Typedescriptor_t BSS__Area__Indication_lengthIndicator_descr_ = { "@BSSGP_Types.BSS_Area_Indication.lengthIndicator", NULL, &BSS__Area__Indication_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BSS__Area__Indication_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       BSS__Area__Indication_bSS__indicator_xer_ = { {"bSS_indicator>\n", "bSS_indicator>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int BSS__Area__Indication_bSS__indicator_oer_ext_arr_[0] = {};
const int BSS__Area__Indication_bSS__indicator_oer_p_[0] = {};
const TTCN_OERdescriptor_t BSS__Area__Indication_bSS__indicator_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BSS__Area__Indication_bSS__indicator_oer_ext_arr_, 0, BSS__Area__Indication_bSS__indicator_oer_p_};
const TTCN_Typedescriptor_t BSS__Area__Indication_bSS__indicator_descr_ = { "@BSSGP_Types.BSS_Area_Indication.bSS_indicator", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &BSS__Area__Indication_bSS__indicator_xer_, &OCTETSTRING_json_, &BSS__Area__Indication_bSS__indicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BSS__Area__Indication_bSS__indicator_default_coding("RAW");
const TTCN_RAWdescriptor_t BSS__Area__Indication_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for BSS__Area__Indication
const TTCN_Typedescriptor_t BSS__Area__Indication_descr_ = { "@BSSGP_Types.BSS_Area_Indication", NULL, &BSS__Area__Indication_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BSS__Area__Indication_default_coding("RAW");
const XERdescriptor_t       Bucket__Leak__Rate_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Bucket__Leak__Rate_iEI_oer_ext_arr_[0] = {};
const int Bucket__Leak__Rate_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Bucket__Leak__Rate_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Bucket__Leak__Rate_iEI_oer_ext_arr_, 0, Bucket__Leak__Rate_iEI_oer_p_};
const TTCN_Typedescriptor_t Bucket__Leak__Rate_iEI_descr_ = { "@BSSGP_Types.Bucket_Leak_Rate.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Bucket__Leak__Rate_iEI_xer_, &OCTETSTRING_json_, &Bucket__Leak__Rate_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bucket__Leak__Rate_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Bucket__Leak__Rate_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Bucket__Leak__Rate_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Bucket__Leak__Rate_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Bucket__Leak__Rate_ext_descr_ = { "@BSSGP_Types.Bucket_Leak_Rate.ext", &BITSTRING_ber_, &Bucket__Leak__Rate_ext_raw_, NULL, &Bucket__Leak__Rate_ext_xer_, &BITSTRING_json_, &Bucket__Leak__Rate_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bucket__Leak__Rate_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Bucket__Leak__Rate_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Bucket__Leak__Rate_lengthIndicator
const TTCN_Typedescriptor_t Bucket__Leak__Rate_lengthIndicator_descr_ = { "@BSSGP_Types.Bucket_Leak_Rate.lengthIndicator", NULL, &Bucket__Leak__Rate_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bucket__Leak__Rate_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Bucket__Leak__Rate_r__Value_xer_ = { {"r_Value>\n", "r_Value>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Bucket__Leak__Rate_r__Value_oer_ext_arr_[0] = {};
const int Bucket__Leak__Rate_r__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t Bucket__Leak__Rate_r__Value_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Bucket__Leak__Rate_r__Value_oer_ext_arr_, 0, Bucket__Leak__Rate_r__Value_oer_p_};
const TTCN_Typedescriptor_t Bucket__Leak__Rate_r__Value_descr_ = { "@BSSGP_Types.Bucket_Leak_Rate.r_Value", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Bucket__Leak__Rate_r__Value_xer_, &OCTETSTRING_json_, &Bucket__Leak__Rate_r__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bucket__Leak__Rate_r__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t Bucket__Leak__Rate_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Bucket__Leak__Rate
const TTCN_Typedescriptor_t Bucket__Leak__Rate_descr_ = { "@BSSGP_Types.Bucket_Leak_Rate", NULL, &Bucket__Leak__Rate_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bucket__Leak__Rate_default_coding("RAW");
const XERdescriptor_t       BVC__Bucket__Size_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int BVC__Bucket__Size_iEI_oer_ext_arr_[0] = {};
const int BVC__Bucket__Size_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t BVC__Bucket__Size_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BVC__Bucket__Size_iEI_oer_ext_arr_, 0, BVC__Bucket__Size_iEI_oer_p_};
const TTCN_Typedescriptor_t BVC__Bucket__Size_iEI_descr_ = { "@BSSGP_Types.BVC_Bucket_Size.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &BVC__Bucket__Size_iEI_xer_, &OCTETSTRING_json_, &BVC__Bucket__Size_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVC__Bucket__Size_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t BVC__Bucket__Size_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       BVC__Bucket__Size_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t BVC__Bucket__Size_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t BVC__Bucket__Size_ext_descr_ = { "@BSSGP_Types.BVC_Bucket_Size.ext", &BITSTRING_ber_, &BVC__Bucket__Size_ext_raw_, NULL, &BVC__Bucket__Size_ext_xer_, &BITSTRING_json_, &BVC__Bucket__Size_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVC__Bucket__Size_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t BVC__Bucket__Size_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for BVC__Bucket__Size_lengthIndicator
const TTCN_Typedescriptor_t BVC__Bucket__Size_lengthIndicator_descr_ = { "@BSSGP_Types.BVC_Bucket_Size.lengthIndicator", NULL, &BVC__Bucket__Size_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVC__Bucket__Size_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       BVC__Bucket__Size_bmax_xer_ = { {"bmax>\n", "bmax>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int BVC__Bucket__Size_bmax_oer_ext_arr_[0] = {};
const int BVC__Bucket__Size_bmax_oer_p_[0] = {};
const TTCN_OERdescriptor_t BVC__Bucket__Size_bmax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, BVC__Bucket__Size_bmax_oer_ext_arr_, 0, BVC__Bucket__Size_bmax_oer_p_};
const TTCN_Typedescriptor_t BVC__Bucket__Size_bmax_descr_ = { "@BSSGP_Types.BVC_Bucket_Size.bmax", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &BVC__Bucket__Size_bmax_xer_, &OCTETSTRING_json_, &BVC__Bucket__Size_bmax_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVC__Bucket__Size_bmax_default_coding("RAW");
const TTCN_RAWdescriptor_t BVC__Bucket__Size_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for BVC__Bucket__Size
const TTCN_Typedescriptor_t BVC__Bucket__Size_descr_ = { "@BSSGP_Types.BVC_Bucket_Size", NULL, &BVC__Bucket__Size_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVC__Bucket__Size_default_coding("RAW");
const XERdescriptor_t       BVCI_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int BVCI_iEI_oer_ext_arr_[0] = {};
const int BVCI_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t BVCI_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BVCI_iEI_oer_ext_arr_, 0, BVCI_iEI_oer_p_};
const TTCN_Typedescriptor_t BVCI_iEI_descr_ = { "@BSSGP_Types.BVCI.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &BVCI_iEI_xer_, &OCTETSTRING_json_, &BVCI_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVCI_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t BVCI_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       BVCI_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t BVCI_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t BVCI_ext_descr_ = { "@BSSGP_Types.BVCI.ext", &BITSTRING_ber_, &BVCI_ext_raw_, NULL, &BVCI_ext_xer_, &BITSTRING_json_, &BVCI_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVCI_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t BVCI_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for BVCI_lengthIndicator
const TTCN_Typedescriptor_t BVCI_lengthIndicator_descr_ = { "@BSSGP_Types.BVCI.lengthIndicator", NULL, &BVCI_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVCI_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       BVCI_unstructured__value_xer_ = { {"unstructured_value>\n", "unstructured_value>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int BVCI_unstructured__value_oer_ext_arr_[0] = {};
const int BVCI_unstructured__value_oer_p_[0] = {};
const TTCN_OERdescriptor_t BVCI_unstructured__value_oer_ = { -1, TRUE, 2, FALSE, 0, 0, BVCI_unstructured__value_oer_ext_arr_, 0, BVCI_unstructured__value_oer_p_};
const TTCN_Typedescriptor_t BVCI_unstructured__value_descr_ = { "@BSSGP_Types.BVCI.unstructured_value", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &BVCI_unstructured__value_xer_, &OCTETSTRING_json_, &BVCI_unstructured__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVCI_unstructured__value_default_coding("RAW");
const TTCN_RAWdescriptor_t BVCI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for BVCI
const TTCN_Typedescriptor_t BVCI_descr_ = { "@BSSGP_Types.BVCI", NULL, &BVCI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVCI_default_coding("RAW");
const XERdescriptor_t       BVC__Measurement_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int BVC__Measurement_iEI_oer_ext_arr_[0] = {};
const int BVC__Measurement_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t BVC__Measurement_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BVC__Measurement_iEI_oer_ext_arr_, 0, BVC__Measurement_iEI_oer_p_};
const TTCN_Typedescriptor_t BVC__Measurement_iEI_descr_ = { "@BSSGP_Types.BVC_Measurement.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &BVC__Measurement_iEI_xer_, &OCTETSTRING_json_, &BVC__Measurement_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVC__Measurement_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t BVC__Measurement_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       BVC__Measurement_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t BVC__Measurement_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t BVC__Measurement_ext_descr_ = { "@BSSGP_Types.BVC_Measurement.ext", &BITSTRING_ber_, &BVC__Measurement_ext_raw_, NULL, &BVC__Measurement_ext_xer_, &BITSTRING_json_, &BVC__Measurement_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVC__Measurement_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t BVC__Measurement_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for BVC__Measurement_lengthIndicator
const TTCN_Typedescriptor_t BVC__Measurement_lengthIndicator_descr_ = { "@BSSGP_Types.BVC_Measurement.lengthIndicator", NULL, &BVC__Measurement_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVC__Measurement_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       BVC__Measurement_delay__Value_xer_ = { {"delay_Value>\n", "delay_Value>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int BVC__Measurement_delay__Value_oer_ext_arr_[0] = {};
const int BVC__Measurement_delay__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t BVC__Measurement_delay__Value_oer_ = { -1, TRUE, 2, FALSE, 0, 0, BVC__Measurement_delay__Value_oer_ext_arr_, 0, BVC__Measurement_delay__Value_oer_p_};
const TTCN_Typedescriptor_t BVC__Measurement_delay__Value_descr_ = { "@BSSGP_Types.BVC_Measurement.delay_Value", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &BVC__Measurement_delay__Value_xer_, &OCTETSTRING_json_, &BVC__Measurement_delay__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVC__Measurement_delay__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t BVC__Measurement_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for BVC__Measurement
const TTCN_Typedescriptor_t BVC__Measurement_descr_ = { "@BSSGP_Types.BVC_Measurement", NULL, &BVC__Measurement_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING BVC__Measurement_default_coding("RAW");
const XERdescriptor_t       Cause__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Cause__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Cause__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Cause__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cause__BSSGP_iEI_oer_ext_arr_, 0, Cause__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Cause__BSSGP_iEI_descr_ = { "@BSSGP_Types.Cause_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cause__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Cause__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cause__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Cause__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Cause__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Cause__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Cause__BSSGP_ext_descr_ = { "@BSSGP_Types.Cause_BSSGP.ext", &BITSTRING_ber_, &Cause__BSSGP_ext_raw_, NULL, &Cause__BSSGP_ext_xer_, &BITSTRING_json_, &Cause__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cause__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Cause__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Cause__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Cause__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Cause_BSSGP.lengthIndicator", NULL, &Cause__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cause__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Cause__BSSGP_cause__Value_xer_ = { {"cause_Value>\n", "cause_Value>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Cause__BSSGP_cause__Value_oer_ext_arr_[0] = {};
const int Cause__BSSGP_cause__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t Cause__BSSGP_cause__Value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cause__BSSGP_cause__Value_oer_ext_arr_, 0, Cause__BSSGP_cause__Value_oer_p_};
const TTCN_Typedescriptor_t Cause__BSSGP_cause__Value_descr_ = { "@BSSGP_Types.Cause_BSSGP.cause_Value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cause__BSSGP_cause__Value_xer_, &OCTETSTRING_json_, &Cause__BSSGP_cause__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cause__BSSGP_cause__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t Cause__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Cause__BSSGP
const TTCN_Typedescriptor_t Cause__BSSGP_descr_ = { "@BSSGP_Types.Cause_BSSGP", NULL, &Cause__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cause__BSSGP_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Cell__Identifier_iEI_oer_ext_arr_[0] = {};
const int Cell__Identifier_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Cell__Identifier_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cell__Identifier_iEI_oer_ext_arr_, 0, Cell__Identifier_iEI_oer_p_};
const TTCN_Typedescriptor_t Cell__Identifier_iEI_descr_ = { "@BSSGP_Types.Cell_Identifier.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cell__Identifier_iEI_xer_, &OCTETSTRING_json_, &Cell__Identifier_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Cell__Identifier_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Cell__Identifier_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Cell__Identifier_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Cell__Identifier_ext_descr_ = { "@BSSGP_Types.Cell_Identifier.ext", &BITSTRING_ber_, &Cell__Identifier_ext_raw_, NULL, &Cell__Identifier_ext_xer_, &BITSTRING_json_, &Cell__Identifier_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Cell__Identifier_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Cell__Identifier_lengthIndicator
const TTCN_Typedescriptor_t Cell__Identifier_lengthIndicator_descr_ = { "@BSSGP_Types.Cell_Identifier.lengthIndicator", NULL, &Cell__Identifier_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier_mccDigit1_descr_ = { "@BSSGP_Types.Cell_Identifier.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_mccDigit1_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier_mccDigit2_descr_ = { "@BSSGP_Types.Cell_Identifier.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_mccDigit2_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier_mccDigit3_descr_ = { "@BSSGP_Types.Cell_Identifier.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_mccDigit3_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier_mncDigit3_descr_ = { "@BSSGP_Types.Cell_Identifier.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_mncDigit3_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier_mncDigit1_descr_ = { "@BSSGP_Types.Cell_Identifier.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_mncDigit1_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier_mncDigit2_descr_ = { "@BSSGP_Types.Cell_Identifier.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_mncDigit2_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Cell__Identifier_lac_oer_ext_arr_[0] = {};
const int Cell__Identifier_lac_oer_p_[0] = {};
const TTCN_OERdescriptor_t Cell__Identifier_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Cell__Identifier_lac_oer_ext_arr_, 0, Cell__Identifier_lac_oer_p_};
const TTCN_Typedescriptor_t Cell__Identifier_lac_descr_ = { "@BSSGP_Types.Cell_Identifier.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Cell__Identifier_lac_xer_, &OCTETSTRING_json_, &Cell__Identifier_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_lac_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Cell__Identifier_rac_oer_ext_arr_[0] = {};
const int Cell__Identifier_rac_oer_p_[0] = {};
const TTCN_OERdescriptor_t Cell__Identifier_rac_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cell__Identifier_rac_oer_ext_arr_, 0, Cell__Identifier_rac_oer_p_};
const TTCN_Typedescriptor_t Cell__Identifier_rac_descr_ = { "@BSSGP_Types.Cell_Identifier.rac", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cell__Identifier_rac_xer_, &OCTETSTRING_json_, &Cell__Identifier_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_rac_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier_cI__value_xer_ = { {"cI_value>\n", "cI_value>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Cell__Identifier_cI__value_oer_ext_arr_[0] = {};
const int Cell__Identifier_cI__value_oer_p_[0] = {};
const TTCN_OERdescriptor_t Cell__Identifier_cI__value_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Cell__Identifier_cI__value_oer_ext_arr_, 0, Cell__Identifier_cI__value_oer_p_};
const TTCN_Typedescriptor_t Cell__Identifier_cI__value_descr_ = { "@BSSGP_Types.Cell_Identifier.cI_value", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Cell__Identifier_cI__value_xer_, &OCTETSTRING_json_, &Cell__Identifier_cI__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_cI__value_default_coding("RAW");
const TTCN_RAWdescriptor_t Cell__Identifier_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Cell__Identifier
const TTCN_Typedescriptor_t Cell__Identifier_descr_ = { "@BSSGP_Types.Cell_Identifier", NULL, &Cell__Identifier_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier__V_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier__V_mccDigit1_descr_ = { "@BSSGP_Types.Cell_Identifier_V.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier__V_mccDigit1_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier__V_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier__V_mccDigit2_descr_ = { "@BSSGP_Types.Cell_Identifier_V.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier__V_mccDigit2_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier__V_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier__V_mccDigit3_descr_ = { "@BSSGP_Types.Cell_Identifier_V.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier__V_mccDigit3_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier__V_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier__V_mncDigit3_descr_ = { "@BSSGP_Types.Cell_Identifier_V.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier__V_mncDigit3_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier__V_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier__V_mncDigit1_descr_ = { "@BSSGP_Types.Cell_Identifier_V.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier__V_mncDigit1_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier__V_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Cell__Identifier__V_mncDigit2_descr_ = { "@BSSGP_Types.Cell_Identifier_V.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Cell__Identifier__V_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier__V_mncDigit2_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier__V_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Cell__Identifier__V_lac_oer_ext_arr_[0] = {};
const int Cell__Identifier__V_lac_oer_p_[0] = {};
const TTCN_OERdescriptor_t Cell__Identifier__V_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Cell__Identifier__V_lac_oer_ext_arr_, 0, Cell__Identifier__V_lac_oer_p_};
const TTCN_Typedescriptor_t Cell__Identifier__V_lac_descr_ = { "@BSSGP_Types.Cell_Identifier_V.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Cell__Identifier__V_lac_xer_, &OCTETSTRING_json_, &Cell__Identifier__V_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier__V_lac_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier__V_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Cell__Identifier__V_rac_oer_ext_arr_[0] = {};
const int Cell__Identifier__V_rac_oer_p_[0] = {};
const TTCN_OERdescriptor_t Cell__Identifier__V_rac_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Cell__Identifier__V_rac_oer_ext_arr_, 0, Cell__Identifier__V_rac_oer_p_};
const TTCN_Typedescriptor_t Cell__Identifier__V_rac_descr_ = { "@BSSGP_Types.Cell_Identifier_V.rac", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Cell__Identifier__V_rac_xer_, &OCTETSTRING_json_, &Cell__Identifier__V_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier__V_rac_default_coding("RAW");
const XERdescriptor_t       Cell__Identifier__V_cI__value_xer_ = { {"cI_value>\n", "cI_value>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Cell__Identifier__V_cI__value_oer_ext_arr_[0] = {};
const int Cell__Identifier__V_cI__value_oer_p_[0] = {};
const TTCN_OERdescriptor_t Cell__Identifier__V_cI__value_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Cell__Identifier__V_cI__value_oer_ext_arr_, 0, Cell__Identifier__V_cI__value_oer_p_};
const TTCN_Typedescriptor_t Cell__Identifier__V_cI__value_descr_ = { "@BSSGP_Types.Cell_Identifier_V.cI_value", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Cell__Identifier__V_cI__value_xer_, &OCTETSTRING_json_, &Cell__Identifier__V_cI__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier__V_cI__value_default_coding("RAW");
const TTCN_RAWdescriptor_t Cell__Identifier__V_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Cell__Identifier__V
const TTCN_Typedescriptor_t Cell__Identifier__V_descr_ = { "@BSSGP_Types.Cell_Identifier_V", NULL, &Cell__Identifier__V_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Identifier__V_default_coding("RAW");
const XERdescriptor_t       Channel__needed_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Channel__needed_iEI_oer_ext_arr_[0] = {};
const int Channel__needed_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Channel__needed_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Channel__needed_iEI_oer_ext_arr_, 0, Channel__needed_iEI_oer_p_};
const TTCN_Typedescriptor_t Channel__needed_iEI_descr_ = { "@BSSGP_Types.Channel_needed.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Channel__needed_iEI_xer_, &OCTETSTRING_json_, &Channel__needed_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Channel__needed_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Channel__needed_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Channel__needed_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Channel__needed_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Channel__needed_ext_descr_ = { "@BSSGP_Types.Channel_needed.ext", &BITSTRING_ber_, &Channel__needed_ext_raw_, NULL, &Channel__needed_ext_xer_, &BITSTRING_json_, &Channel__needed_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Channel__needed_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Channel__needed_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Channel__needed_lengthIndicator
const TTCN_Typedescriptor_t Channel__needed_lengthIndicator_descr_ = { "@BSSGP_Types.Channel_needed.lengthIndicator", NULL, &Channel__needed_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Channel__needed_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Channel__Needed__Value_channel__1_xer_ = { {"channel_1>\n", "channel_1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Channel__Needed__Value_channel__1_descr_ = { "@BSSGP_Types.Channel_Needed_Value.channel_1", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &Channel__Needed__Value_channel__1_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Channel__Needed__Value_channel__1_default_coding("RAW");
const XERdescriptor_t       Channel__Needed__Value_channel__2_xer_ = { {"channel_2>\n", "channel_2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Channel__Needed__Value_channel__2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Channel__Needed__Value_channel__2_descr_ = { "@BSSGP_Types.Channel_Needed_Value.channel_2", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &Channel__Needed__Value_channel__2_xer_, &BITSTRING_json_, &Channel__Needed__Value_channel__2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Channel__Needed__Value_channel__2_default_coding("RAW");
const XERdescriptor_t       Channel__Needed__Value_channelNeededIEI_xer_ = { {"channelNeededIEI>\n", "channelNeededIEI>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Channel__Needed__Value_channelNeededIEI_descr_ = { "@BSSGP_Types.Channel_Needed_Value.channelNeededIEI", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &Channel__Needed__Value_channelNeededIEI_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Channel__Needed__Value_channelNeededIEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Channel__Needed__Value_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Channel__Needed__Value
const TTCN_Typedescriptor_t Channel__Needed__Value_descr_ = { "@BSSGP_Types.Channel_Needed_Value", NULL, &Channel__Needed__Value_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Channel__Needed__Value_default_coding("RAW");
UNIVERSAL_CHARSTRING Channel__needed_channel__Needed__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t Channel__needed_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Channel__needed
const TTCN_Typedescriptor_t Channel__needed_descr_ = { "@BSSGP_Types.Channel_needed", NULL, &Channel__needed_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Channel__needed_default_coding("RAW");
const XERdescriptor_t       DRX__Parameters_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int DRX__Parameters_iEI_oer_ext_arr_[0] = {};
const int DRX__Parameters_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t DRX__Parameters_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DRX__Parameters_iEI_oer_ext_arr_, 0, DRX__Parameters_iEI_oer_p_};
const TTCN_Typedescriptor_t DRX__Parameters_iEI_descr_ = { "@BSSGP_Types.DRX_Parameters.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &DRX__Parameters_iEI_xer_, &OCTETSTRING_json_, &DRX__Parameters_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DRX__Parameters_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t DRX__Parameters_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DRX__Parameters_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DRX__Parameters_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DRX__Parameters_ext_descr_ = { "@BSSGP_Types.DRX_Parameters.ext", &BITSTRING_ber_, &DRX__Parameters_ext_raw_, NULL, &DRX__Parameters_ext_xer_, &BITSTRING_json_, &DRX__Parameters_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DRX__Parameters_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t DRX__Parameters_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for DRX__Parameters_lengthIndicator
const TTCN_Typedescriptor_t DRX__Parameters_lengthIndicator_descr_ = { "@BSSGP_Types.DRX_Parameters.lengthIndicator", NULL, &DRX__Parameters_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DRX__Parameters_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       DRX__Parameters_splitPG__CycleCode_xer_ = { {"splitPG_CycleCode>\n", "splitPG_CycleCode>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int DRX__Parameters_splitPG__CycleCode_oer_ext_arr_[0] = {};
const int DRX__Parameters_splitPG__CycleCode_oer_p_[0] = {};
const TTCN_OERdescriptor_t DRX__Parameters_splitPG__CycleCode_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DRX__Parameters_splitPG__CycleCode_oer_ext_arr_, 0, DRX__Parameters_splitPG__CycleCode_oer_p_};
const TTCN_Typedescriptor_t DRX__Parameters_splitPG__CycleCode_descr_ = { "@BSSGP_Types.DRX_Parameters.splitPG_CycleCode", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &DRX__Parameters_splitPG__CycleCode_xer_, &OCTETSTRING_json_, &DRX__Parameters_splitPG__CycleCode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DRX__Parameters_splitPG__CycleCode_default_coding("RAW");
const XERdescriptor_t       DRX__Parameters_nonDRXTimer_xer_ = { {"nonDRXTimer>\n", "nonDRXTimer>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t DRX__Parameters_nonDRXTimer_descr_ = { "@BSSGP_Types.DRX_Parameters.nonDRXTimer", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &DRX__Parameters_nonDRXTimer_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DRX__Parameters_nonDRXTimer_default_coding("RAW");
const XERdescriptor_t       DRX__Parameters_splitOnCCCH_xer_ = { {"splitOnCCCH>\n", "splitOnCCCH>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DRX__Parameters_splitOnCCCH_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DRX__Parameters_splitOnCCCH_descr_ = { "@BSSGP_Types.DRX_Parameters.splitOnCCCH", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &DRX__Parameters_splitOnCCCH_xer_, &BITSTRING_json_, &DRX__Parameters_splitOnCCCH_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DRX__Parameters_splitOnCCCH_default_coding("RAW");
const XERdescriptor_t       DRX__Parameters_cnSpecificDRXCycleLength_xer_ = { {"cnSpecificDRXCycleLength>\n", "cnSpecificDRXCycleLength>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DRX__Parameters_cnSpecificDRXCycleLength_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DRX__Parameters_cnSpecificDRXCycleLength_descr_ = { "@BSSGP_Types.DRX_Parameters.cnSpecificDRXCycleLength", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &DRX__Parameters_cnSpecificDRXCycleLength_xer_, &BITSTRING_json_, &DRX__Parameters_cnSpecificDRXCycleLength_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DRX__Parameters_cnSpecificDRXCycleLength_default_coding("RAW");
const TTCN_RAWdescriptor_t DRX__Parameters_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for DRX__Parameters
const TTCN_Typedescriptor_t DRX__Parameters_descr_ = { "@BSSGP_Types.DRX_Parameters", NULL, &DRX__Parameters_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DRX__Parameters_default_coding("RAW");
const XERdescriptor_t       EMLPP__Priority__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int EMLPP__Priority__BSSGP_iEI_oer_ext_arr_[0] = {};
const int EMLPP__Priority__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t EMLPP__Priority__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EMLPP__Priority__BSSGP_iEI_oer_ext_arr_, 0, EMLPP__Priority__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t EMLPP__Priority__BSSGP_iEI_descr_ = { "@BSSGP_Types.EMLPP_Priority_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &EMLPP__Priority__BSSGP_iEI_xer_, &OCTETSTRING_json_, &EMLPP__Priority__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EMLPP__Priority__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t EMLPP__Priority__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EMLPP__Priority__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EMLPP__Priority__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EMLPP__Priority__BSSGP_ext_descr_ = { "@BSSGP_Types.EMLPP_Priority_BSSGP.ext", &BITSTRING_ber_, &EMLPP__Priority__BSSGP_ext_raw_, NULL, &EMLPP__Priority__BSSGP_ext_xer_, &BITSTRING_json_, &EMLPP__Priority__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EMLPP__Priority__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t EMLPP__Priority__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for EMLPP__Priority__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t EMLPP__Priority__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.EMLPP_Priority_BSSGP.lengthIndicator", NULL, &EMLPP__Priority__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EMLPP__Priority__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       EMLPP__Priority__BSSGP_callPriority_xer_ = { {"callPriority>\n", "callPriority>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EMLPP__Priority__BSSGP_callPriority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EMLPP__Priority__BSSGP_callPriority_descr_ = { "@BSSGP_Types.EMLPP_Priority_BSSGP.callPriority", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &EMLPP__Priority__BSSGP_callPriority_xer_, &BITSTRING_json_, &EMLPP__Priority__BSSGP_callPriority_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EMLPP__Priority__BSSGP_callPriority_default_coding("RAW");
const XERdescriptor_t       EMLPP__Priority__BSSGP_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t EMLPP__Priority__BSSGP_spare_descr_ = { "@BSSGP_Types.EMLPP_Priority_BSSGP.spare", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &EMLPP__Priority__BSSGP_spare_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EMLPP__Priority__BSSGP_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t EMLPP__Priority__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for EMLPP__Priority__BSSGP
const TTCN_Typedescriptor_t EMLPP__Priority__BSSGP_descr_ = { "@BSSGP_Types.EMLPP_Priority_BSSGP", NULL, &EMLPP__Priority__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EMLPP__Priority__BSSGP_default_coding("RAW");
const XERdescriptor_t       Flush__Action_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Flush__Action_iEI_oer_ext_arr_[0] = {};
const int Flush__Action_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Flush__Action_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Flush__Action_iEI_oer_ext_arr_, 0, Flush__Action_iEI_oer_p_};
const TTCN_Typedescriptor_t Flush__Action_iEI_descr_ = { "@BSSGP_Types.Flush_Action.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Flush__Action_iEI_xer_, &OCTETSTRING_json_, &Flush__Action_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flush__Action_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Flush__Action_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Flush__Action_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Flush__Action_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Flush__Action_ext_descr_ = { "@BSSGP_Types.Flush_Action.ext", &BITSTRING_ber_, &Flush__Action_ext_raw_, NULL, &Flush__Action_ext_xer_, &BITSTRING_json_, &Flush__Action_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flush__Action_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Flush__Action_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Flush__Action_lengthIndicator
const TTCN_Typedescriptor_t Flush__Action_lengthIndicator_descr_ = { "@BSSGP_Types.Flush_Action.lengthIndicator", NULL, &Flush__Action_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flush__Action_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Flush__Action_actionValue_xer_ = { {"actionValue>\n", "actionValue>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Flush__Action_actionValue_oer_ext_arr_[0] = {};
const int Flush__Action_actionValue_oer_p_[0] = {};
const TTCN_OERdescriptor_t Flush__Action_actionValue_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Flush__Action_actionValue_oer_ext_arr_, 0, Flush__Action_actionValue_oer_p_};
const TTCN_Typedescriptor_t Flush__Action_actionValue_descr_ = { "@BSSGP_Types.Flush_Action.actionValue", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Flush__Action_actionValue_xer_, &OCTETSTRING_json_, &Flush__Action_actionValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flush__Action_actionValue_default_coding("RAW");
const TTCN_RAWdescriptor_t Flush__Action_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Flush__Action
const TTCN_Typedescriptor_t Flush__Action_descr_ = { "@BSSGP_Types.Flush_Action", NULL, &Flush__Action_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flush__Action_default_coding("RAW");
const XERdescriptor_t       IMSI__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int IMSI__BSSGP_iEI_oer_ext_arr_[0] = {};
const int IMSI__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t IMSI__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IMSI__BSSGP_iEI_oer_ext_arr_, 0, IMSI__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t IMSI__BSSGP_iEI_descr_ = { "@BSSGP_Types.IMSI_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &IMSI__BSSGP_iEI_xer_, &OCTETSTRING_json_, &IMSI__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMSI__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t IMSI__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IMSI__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMSI__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMSI__BSSGP_ext_descr_ = { "@BSSGP_Types.IMSI_BSSGP.ext", &BITSTRING_ber_, &IMSI__BSSGP_ext_raw_, NULL, &IMSI__BSSGP_ext_xer_, &BITSTRING_json_, &IMSI__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMSI__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t IMSI__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IMSI__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t IMSI__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.IMSI_BSSGP.lengthIndicator", NULL, &IMSI__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMSI__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       IMSI__BSSGP_type__of__Identity_xer_ = { {"type_of_Identity>\n", "type_of_Identity>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMSI__BSSGP_type__of__Identity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMSI__BSSGP_type__of__Identity_descr_ = { "@BSSGP_Types.IMSI_BSSGP.type_of_Identity", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &IMSI__BSSGP_type__of__Identity_xer_, &BITSTRING_json_, &IMSI__BSSGP_type__of__Identity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMSI__BSSGP_type__of__Identity_default_coding("RAW");
const XERdescriptor_t       IMSI__BSSGP_oddevenIndicator_xer_ = { {"oddevenIndicator>\n", "oddevenIndicator>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMSI__BSSGP_oddevenIndicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMSI__BSSGP_oddevenIndicator_descr_ = { "@BSSGP_Types.IMSI_BSSGP.oddevenIndicator", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &IMSI__BSSGP_oddevenIndicator_xer_, &BITSTRING_json_, &IMSI__BSSGP_oddevenIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMSI__BSSGP_oddevenIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t IMSI__BSSGP_digits_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IMSI__BSSGP_digits_xer_ = { {"digits>\n", "digits>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t IMSI__BSSGP_digits_descr_ = { "@BSSGP_Types.IMSI_BSSGP.digits", NULL, &IMSI__BSSGP_digits_raw_, NULL, &IMSI__BSSGP_digits_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMSI__BSSGP_digits_default_coding("RAW");
const TTCN_RAWdescriptor_t IMSI__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,8,0,0,8,8,pp_0,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IMSI__BSSGP
const TTCN_Typedescriptor_t IMSI__BSSGP_descr_ = { "@BSSGP_Types.IMSI_BSSGP", NULL, &IMSI__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMSI__BSSGP_default_coding("RAW");
const XERdescriptor_t       LLC__PDU_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LLC__PDU_iEI_oer_ext_arr_[0] = {};
const int LLC__PDU_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t LLC__PDU_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LLC__PDU_iEI_oer_ext_arr_, 0, LLC__PDU_iEI_oer_p_};
const TTCN_Typedescriptor_t LLC__PDU_iEI_descr_ = { "@BSSGP_Types.LLC_PDU.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LLC__PDU_iEI_xer_, &OCTETSTRING_json_, &LLC__PDU_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LLC__PDU_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t LLC__PDU_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LLC__PDU_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LLC__PDU_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LLC__PDU_ext_descr_ = { "@BSSGP_Types.LLC_PDU.ext", &BITSTRING_ber_, &LLC__PDU_ext_raw_, NULL, &LLC__PDU_ext_xer_, &BITSTRING_json_, &LLC__PDU_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LLC__PDU_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t LLC__PDU_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LLC__PDU_lengthIndicator
const TTCN_Typedescriptor_t LLC__PDU_lengthIndicator_descr_ = { "@BSSGP_Types.LLC_PDU.lengthIndicator", NULL, &LLC__PDU_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LLC__PDU_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       LLC__PDU_lLC__PDU_xer_ = { {"lLC_PDU>\n", "lLC_PDU>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LLC__PDU_lLC__PDU_oer_ext_arr_[0] = {};
const int LLC__PDU_lLC__PDU_oer_p_[0] = {};
const TTCN_OERdescriptor_t LLC__PDU_lLC__PDU_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LLC__PDU_lLC__PDU_oer_ext_arr_, 0, LLC__PDU_lLC__PDU_oer_p_};
const TTCN_Typedescriptor_t LLC__PDU_lLC__PDU_descr_ = { "@BSSGP_Types.LLC_PDU.lLC_PDU", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &LLC__PDU_lLC__PDU_xer_, &OCTETSTRING_json_, &LLC__PDU_lLC__PDU_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LLC__PDU_lLC__PDU_default_coding("RAW");
const TTCN_RAWdescriptor_t LLC__PDU_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LLC__PDU
const TTCN_Typedescriptor_t LLC__PDU_descr_ = { "@BSSGP_Types.LLC_PDU", NULL, &LLC__PDU_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LLC__PDU_default_coding("RAW");
const XERdescriptor_t       LLC__Frames__Discarded_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LLC__Frames__Discarded_iEI_oer_ext_arr_[0] = {};
const int LLC__Frames__Discarded_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t LLC__Frames__Discarded_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LLC__Frames__Discarded_iEI_oer_ext_arr_, 0, LLC__Frames__Discarded_iEI_oer_p_};
const TTCN_Typedescriptor_t LLC__Frames__Discarded_iEI_descr_ = { "@BSSGP_Types.LLC_Frames_Discarded.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LLC__Frames__Discarded_iEI_xer_, &OCTETSTRING_json_, &LLC__Frames__Discarded_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LLC__Frames__Discarded_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t LLC__Frames__Discarded_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LLC__Frames__Discarded_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LLC__Frames__Discarded_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LLC__Frames__Discarded_ext_descr_ = { "@BSSGP_Types.LLC_Frames_Discarded.ext", &BITSTRING_ber_, &LLC__Frames__Discarded_ext_raw_, NULL, &LLC__Frames__Discarded_ext_xer_, &BITSTRING_json_, &LLC__Frames__Discarded_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LLC__Frames__Discarded_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t LLC__Frames__Discarded_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LLC__Frames__Discarded_lengthIndicator
const TTCN_Typedescriptor_t LLC__Frames__Discarded_lengthIndicator_descr_ = { "@BSSGP_Types.LLC_Frames_Discarded.lengthIndicator", NULL, &LLC__Frames__Discarded_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LLC__Frames__Discarded_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t LLC__Frames__Discarded_number__of__frames__discarded_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LLC__Frames__Discarded_number__of__frames__discarded_xer_ = { {"number_of_frames_discarded>\n", "number_of_frames_discarded>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t LLC__Frames__Discarded_number__of__frames__discarded_descr_ = { "@BSSGP_Types.LLC_Frames_Discarded.number_of_frames_discarded", NULL, &LLC__Frames__Discarded_number__of__frames__discarded_raw_, NULL, &LLC__Frames__Discarded_number__of__frames__discarded_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LLC__Frames__Discarded_number__of__frames__discarded_default_coding("RAW");
const TTCN_RAWdescriptor_t LLC__Frames__Discarded_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LLC__Frames__Discarded
const TTCN_Typedescriptor_t LLC__Frames__Discarded_descr_ = { "@BSSGP_Types.LLC_Frames_Discarded", NULL, &LLC__Frames__Discarded_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LLC__Frames__Discarded_default_coding("RAW");
const XERdescriptor_t       Location__Area_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Location__Area_iEI_oer_ext_arr_[0] = {};
const int Location__Area_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Location__Area_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Location__Area_iEI_oer_ext_arr_, 0, Location__Area_iEI_oer_p_};
const TTCN_Typedescriptor_t Location__Area_iEI_descr_ = { "@BSSGP_Types.Location_Area.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Location__Area_iEI_xer_, &OCTETSTRING_json_, &Location__Area_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Location__Area_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Location__Area_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Location__Area_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Location__Area_ext_descr_ = { "@BSSGP_Types.Location_Area.ext", &BITSTRING_ber_, &Location__Area_ext_raw_, NULL, &Location__Area_ext_xer_, &BITSTRING_json_, &Location__Area_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Location__Area_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Location__Area_lengthIndicator
const TTCN_Typedescriptor_t Location__Area_lengthIndicator_descr_ = { "@BSSGP_Types.Location_Area.lengthIndicator", NULL, &Location__Area_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Location__Area_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Location__Area_mccDigit1_descr_ = { "@BSSGP_Types.Location_Area.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Location__Area_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_mccDigit1_default_coding("RAW");
const XERdescriptor_t       Location__Area_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Location__Area_mccDigit2_descr_ = { "@BSSGP_Types.Location_Area.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Location__Area_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_mccDigit2_default_coding("RAW");
const XERdescriptor_t       Location__Area_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Location__Area_mccDigit3_descr_ = { "@BSSGP_Types.Location_Area.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Location__Area_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_mccDigit3_default_coding("RAW");
const XERdescriptor_t       Location__Area_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Location__Area_mncDigit3_descr_ = { "@BSSGP_Types.Location_Area.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Location__Area_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_mncDigit3_default_coding("RAW");
const XERdescriptor_t       Location__Area_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Location__Area_mncDigit1_descr_ = { "@BSSGP_Types.Location_Area.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Location__Area_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_mncDigit1_default_coding("RAW");
const XERdescriptor_t       Location__Area_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Location__Area_mncDigit2_descr_ = { "@BSSGP_Types.Location_Area.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Location__Area_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_mncDigit2_default_coding("RAW");
const XERdescriptor_t       Location__Area_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Location__Area_lac_oer_ext_arr_[0] = {};
const int Location__Area_lac_oer_p_[0] = {};
const TTCN_OERdescriptor_t Location__Area_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Location__Area_lac_oer_ext_arr_, 0, Location__Area_lac_oer_p_};
const TTCN_Typedescriptor_t Location__Area_lac_descr_ = { "@BSSGP_Types.Location_Area.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Location__Area_lac_xer_, &OCTETSTRING_json_, &Location__Area_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_lac_default_coding("RAW");
const TTCN_RAWdescriptor_t Location__Area_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Location__Area
const TTCN_Typedescriptor_t Location__Area_descr_ = { "@BSSGP_Types.Location_Area", NULL, &Location__Area_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Area_default_coding("RAW");
const XERdescriptor_t       LSA__Identifier__List__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LSA__Identifier__List__BSSGP_iEI_oer_ext_arr_[0] = {};
const int LSA__Identifier__List__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t LSA__Identifier__List__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LSA__Identifier__List__BSSGP_iEI_oer_ext_arr_, 0, LSA__Identifier__List__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t LSA__Identifier__List__BSSGP_iEI_descr_ = { "@BSSGP_Types.LSA_Identifier_List_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LSA__Identifier__List__BSSGP_iEI_xer_, &OCTETSTRING_json_, &LSA__Identifier__List__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identifier__List__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t LSA__Identifier__List__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LSA__Identifier__List__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LSA__Identifier__List__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LSA__Identifier__List__BSSGP_ext_descr_ = { "@BSSGP_Types.LSA_Identifier_List_BSSGP.ext", &BITSTRING_ber_, &LSA__Identifier__List__BSSGP_ext_raw_, NULL, &LSA__Identifier__List__BSSGP_ext_xer_, &BITSTRING_json_, &LSA__Identifier__List__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identifier__List__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t LSA__Identifier__List__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LSA__Identifier__List__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t LSA__Identifier__List__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.LSA_Identifier_List_BSSGP.lengthIndicator", NULL, &LSA__Identifier__List__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identifier__List__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       LSA__Identifier__List__BSSGP_lSA__Identifier__List_xer_ = { {"lSA_Identifier_List>\n", "lSA_Identifier_List>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LSA__Identifier__List__BSSGP_lSA__Identifier__List_oer_ext_arr_[0] = {};
const int LSA__Identifier__List__BSSGP_lSA__Identifier__List_oer_p_[0] = {};
const TTCN_OERdescriptor_t LSA__Identifier__List__BSSGP_lSA__Identifier__List_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LSA__Identifier__List__BSSGP_lSA__Identifier__List_oer_ext_arr_, 0, LSA__Identifier__List__BSSGP_lSA__Identifier__List_oer_p_};
const TTCN_Typedescriptor_t LSA__Identifier__List__BSSGP_lSA__Identifier__List_descr_ = { "@BSSGP_Types.LSA_Identifier_List_BSSGP.lSA_Identifier_List", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &LSA__Identifier__List__BSSGP_lSA__Identifier__List_xer_, &OCTETSTRING_json_, &LSA__Identifier__List__BSSGP_lSA__Identifier__List_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identifier__List__BSSGP_lSA__Identifier__List_default_coding("RAW");
const TTCN_RAWdescriptor_t LSA__Identifier__List__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LSA__Identifier__List__BSSGP
const TTCN_Typedescriptor_t LSA__Identifier__List__BSSGP_descr_ = { "@BSSGP_Types.LSA_Identifier_List_BSSGP", NULL, &LSA__Identifier__List__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identifier__List__BSSGP_default_coding("RAW");
const XERdescriptor_t       LSA__Information__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LSA__Information__BSSGP_iEI_oer_ext_arr_[0] = {};
const int LSA__Information__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t LSA__Information__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LSA__Information__BSSGP_iEI_oer_ext_arr_, 0, LSA__Information__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t LSA__Information__BSSGP_iEI_descr_ = { "@BSSGP_Types.LSA_Information_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LSA__Information__BSSGP_iEI_xer_, &OCTETSTRING_json_, &LSA__Information__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Information__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t LSA__Information__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LSA__Information__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LSA__Information__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LSA__Information__BSSGP_ext_descr_ = { "@BSSGP_Types.LSA_Information_BSSGP.ext", &BITSTRING_ber_, &LSA__Information__BSSGP_ext_raw_, NULL, &LSA__Information__BSSGP_ext_xer_, &BITSTRING_json_, &LSA__Information__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Information__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t LSA__Information__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LSA__Information__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t LSA__Information__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.LSA_Information_BSSGP.lengthIndicator", NULL, &LSA__Information__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Information__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       LSA__Information_lSA__Only_xer_ = { {"lSA_Only>\n", "lSA_Only>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LSA__Information_lSA__Only_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LSA__Information_lSA__Only_descr_ = { "@BSSGP_Types.LSA_Information.lSA_Only", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LSA__Information_lSA__Only_xer_, &BITSTRING_json_, &LSA__Information_lSA__Only_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Information_lSA__Only_default_coding("RAW");
const XERdescriptor_t       LSA__Information_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t LSA__Information_spare_descr_ = { "@BSSGP_Types.LSA_Information.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &LSA__Information_spare_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Information_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t LSA__Identification__and__Attributes__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LSA__Identification__and__Attributes__List
const TTCN_Typedescriptor_t LSA__Identification__and__Attributes__List_descr_ = { "@BSSGP_Types.LSA_Identification_and_Attributes_List", NULL, &LSA__Identification__and__Attributes__List_raw_, NULL, NULL, NULL, NULL, NULL, &LSA__Identification__and__Attributes_descr_, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       LSA__Identification__and__Attributes_priority_xer_ = { {"priority>\n", "priority>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LSA__Identification__and__Attributes_priority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LSA__Identification__and__Attributes_priority_descr_ = { "@BSSGP_Types.LSA_Identification_and_Attributes.priority", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &LSA__Identification__and__Attributes_priority_xer_, &BITSTRING_json_, &LSA__Identification__and__Attributes_priority_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identification__and__Attributes_priority_default_coding("RAW");
const XERdescriptor_t       LSA__Identification__and__Attributes_pref_xer_ = { {"pref>\n", "pref>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LSA__Identification__and__Attributes_pref_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LSA__Identification__and__Attributes_pref_descr_ = { "@BSSGP_Types.LSA_Identification_and_Attributes.pref", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LSA__Identification__and__Attributes_pref_xer_, &BITSTRING_json_, &LSA__Identification__and__Attributes_pref_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identification__and__Attributes_pref_default_coding("RAW");
const XERdescriptor_t       LSA__Identification__and__Attributes_act_xer_ = { {"act>\n", "act>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LSA__Identification__and__Attributes_act_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LSA__Identification__and__Attributes_act_descr_ = { "@BSSGP_Types.LSA_Identification_and_Attributes.act", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LSA__Identification__and__Attributes_act_xer_, &BITSTRING_json_, &LSA__Identification__and__Attributes_act_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identification__and__Attributes_act_default_coding("RAW");
const XERdescriptor_t       LSA__Identification__and__Attributes_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LSA__Identification__and__Attributes_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LSA__Identification__and__Attributes_spare_descr_ = { "@BSSGP_Types.LSA_Identification_and_Attributes.spare", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &LSA__Identification__and__Attributes_spare_xer_, &BITSTRING_json_, &LSA__Identification__and__Attributes_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identification__and__Attributes_spare_default_coding("RAW");
const XERdescriptor_t       LSA__Identification__and__Attributes_lSA__ID_xer_ = { {"lSA_ID>\n", "lSA_ID>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LSA__Identification__and__Attributes_lSA__ID_oer_ext_arr_[0] = {};
const int LSA__Identification__and__Attributes_lSA__ID_oer_p_[0] = {};
const TTCN_OERdescriptor_t LSA__Identification__and__Attributes_lSA__ID_oer_ = { -1, TRUE, 3, FALSE, 0, 0, LSA__Identification__and__Attributes_lSA__ID_oer_ext_arr_, 0, LSA__Identification__and__Attributes_lSA__ID_oer_p_};
const TTCN_Typedescriptor_t LSA__Identification__and__Attributes_lSA__ID_descr_ = { "@BSSGP_Types.LSA_Identification_and_Attributes.lSA_ID", &OCTETSTRING_ber_, &General__Types::OCT3_raw_, &OCTETSTRING_text_, &LSA__Identification__and__Attributes_lSA__ID_xer_, &OCTETSTRING_json_, &LSA__Identification__and__Attributes_lSA__ID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identification__and__Attributes_lSA__ID_default_coding("RAW");
const TTCN_RAWdescriptor_t LSA__Identification__and__Attributes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LSA__Identification__and__Attributes
const TTCN_Typedescriptor_t LSA__Identification__and__Attributes_descr_ = { "@BSSGP_Types.LSA_Identification_and_Attributes", NULL, &LSA__Identification__and__Attributes_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Identification__and__Attributes_default_coding("RAW");
UNIVERSAL_CHARSTRING LSA__Identification__and__Attributes__List_0_default_coding("RAW");
UNIVERSAL_CHARSTRING LSA__Identification__and__Attributes__List_default_coding("RAW");
UNIVERSAL_CHARSTRING LSA__Information_lSA__Identification__and__Attributes__List_default_coding("RAW");
const TTCN_RAWdescriptor_t LSA__Information_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LSA__Information
const TTCN_Typedescriptor_t LSA__Information_descr_ = { "@BSSGP_Types.LSA_Information", NULL, &LSA__Information_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Information_default_coding("RAW");
UNIVERSAL_CHARSTRING LSA__Information__BSSGP_lSA__Information_default_coding("RAW");
const TTCN_RAWdescriptor_t LSA__Information__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LSA__Information__BSSGP
const TTCN_Typedescriptor_t LSA__Information__BSSGP_descr_ = { "@BSSGP_Types.LSA_Information_BSSGP", NULL, &LSA__Information__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LSA__Information__BSSGP_default_coding("RAW");
const XERdescriptor_t       Mobile__Id__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Mobile__Id__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Mobile__Id__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Mobile__Id__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Mobile__Id__BSSGP_iEI_oer_ext_arr_, 0, Mobile__Id__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Mobile__Id__BSSGP_iEI_descr_ = { "@BSSGP_Types.Mobile_Id_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Mobile__Id__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Mobile__Id__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Mobile__Id__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Mobile__Id__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Mobile__Id__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Mobile__Id__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Mobile__Id__BSSGP_ext_descr_ = { "@BSSGP_Types.Mobile_Id_BSSGP.ext", &BITSTRING_ber_, &Mobile__Id__BSSGP_ext_raw_, NULL, &Mobile__Id__BSSGP_ext_xer_, &BITSTRING_json_, &Mobile__Id__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Mobile__Id__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Mobile__Id__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Mobile__Id__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Mobile__Id__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Mobile_Id_BSSGP.lengthIndicator", NULL, &Mobile__Id__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Mobile__Id__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MobileIdentityV__BSSGP_typeOfIdentity_xer_ = { {"typeOfIdentity>\n", "typeOfIdentity>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MobileIdentityV__BSSGP_typeOfIdentity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MobileIdentityV__BSSGP_typeOfIdentity_descr_ = { "@BSSGP_Types.MobileIdentityV_BSSGP.typeOfIdentity", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &MobileIdentityV__BSSGP_typeOfIdentity_xer_, &BITSTRING_json_, &MobileIdentityV__BSSGP_typeOfIdentity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MobileIdentityV__BSSGP_typeOfIdentity_default_coding("RAW");
const TTCN_RAWdescriptor_t OddEvenInd__Identity__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for OddEvenInd__Identity__BSSGP
const TTCN_Typedescriptor_t OddEvenInd__Identity__BSSGP_descr_ = { "@BSSGP_Types.OddEvenInd_Identity_BSSGP", NULL, &OddEvenInd__Identity__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       IMSI__MobileIdentityV_oddevenIndicator_xer_ = { {"oddevenIndicator>\n", "oddevenIndicator>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMSI__MobileIdentityV_oddevenIndicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMSI__MobileIdentityV_oddevenIndicator_descr_ = { "@BSSGP_Types.IMSI_MobileIdentityV.oddevenIndicator", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &IMSI__MobileIdentityV_oddevenIndicator_xer_, &BITSTRING_json_, &IMSI__MobileIdentityV_oddevenIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMSI__MobileIdentityV_oddevenIndicator_default_coding("RAW");
const XERdescriptor_t       IMSI__MobileIdentityV_digits_xer_ = { {"digits>\n", "digits>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t IMSI__MobileIdentityV_digits_descr_ = { "@BSSGP_Types.IMSI_MobileIdentityV.digits", NULL, &HEXSTRING_raw_, NULL, &IMSI__MobileIdentityV_digits_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMSI__MobileIdentityV_digits_default_coding("RAW");
const TTCN_RAWdescriptor_t IMSI__MobileIdentityV_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IMSI__MobileIdentityV
const TTCN_Typedescriptor_t IMSI__MobileIdentityV_descr_ = { "@BSSGP_Types.IMSI_MobileIdentityV", NULL, &IMSI__MobileIdentityV_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t IMSI__MobileIdentityV_fillerDigit_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IMSI__MobileIdentityV_fillerDigit_xer_ = { {"fillerDigit>\n", "fillerDigit>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMSI__MobileIdentityV_fillerDigit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMSI__MobileIdentityV_fillerDigit_descr_ = { "@BSSGP_Types.IMSI_MobileIdentityV.fillerDigit", &BITSTRING_ber_, &IMSI__MobileIdentityV_fillerDigit_raw_, NULL, &IMSI__MobileIdentityV_fillerDigit_xer_, &BITSTRING_json_, &IMSI__MobileIdentityV_fillerDigit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMSI__MobileIdentityV_fillerDigit_default_coding("RAW");
UNIVERSAL_CHARSTRING IMSI__MobileIdentityV_default_coding("RAW");
UNIVERSAL_CHARSTRING OddEvenInd__Identity__BSSGP_imsi_default_coding("RAW");
const XERdescriptor_t       IMEI__MobileIdentityV_oddevenIndicator_xer_ = { {"oddevenIndicator>\n", "oddevenIndicator>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMEI__MobileIdentityV_oddevenIndicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMEI__MobileIdentityV_oddevenIndicator_descr_ = { "@BSSGP_Types.IMEI_MobileIdentityV.oddevenIndicator", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &IMEI__MobileIdentityV_oddevenIndicator_xer_, &BITSTRING_json_, &IMEI__MobileIdentityV_oddevenIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__MobileIdentityV_oddevenIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t IMEI__MobileIdentityV_digits_raw_ = {60,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IMEI__MobileIdentityV_digits_xer_ = { {"digits>\n", "digits>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t IMEI__MobileIdentityV_digits_descr_ = { "@BSSGP_Types.IMEI_MobileIdentityV.digits", NULL, &IMEI__MobileIdentityV_digits_raw_, NULL, &IMEI__MobileIdentityV_digits_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__MobileIdentityV_digits_default_coding("RAW");
const TTCN_RAWdescriptor_t IMEI__MobileIdentityV_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IMEI__MobileIdentityV
const TTCN_Typedescriptor_t IMEI__MobileIdentityV_descr_ = { "@BSSGP_Types.IMEI_MobileIdentityV", NULL, &IMEI__MobileIdentityV_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__MobileIdentityV_default_coding("RAW");
UNIVERSAL_CHARSTRING OddEvenInd__Identity__BSSGP_imei_default_coding("RAW");
const XERdescriptor_t       IMEI__SV__MobileIdentityV_oddevenIndicator_xer_ = { {"oddevenIndicator>\n", "oddevenIndicator>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMEI__SV__MobileIdentityV_oddevenIndicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMEI__SV__MobileIdentityV_oddevenIndicator_descr_ = { "@BSSGP_Types.IMEI_SV_MobileIdentityV.oddevenIndicator", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &IMEI__SV__MobileIdentityV_oddevenIndicator_xer_, &BITSTRING_json_, &IMEI__SV__MobileIdentityV_oddevenIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__SV__MobileIdentityV_oddevenIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t IMEI__SV__MobileIdentityV_digits_raw_ = {64,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IMEI__SV__MobileIdentityV_digits_xer_ = { {"digits>\n", "digits>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t IMEI__SV__MobileIdentityV_digits_descr_ = { "@BSSGP_Types.IMEI_SV_MobileIdentityV.digits", NULL, &IMEI__SV__MobileIdentityV_digits_raw_, NULL, &IMEI__SV__MobileIdentityV_digits_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__SV__MobileIdentityV_digits_default_coding("RAW");
const XERdescriptor_t       IMEI__SV__MobileIdentityV_fillerDigit_xer_ = { {"fillerDigit>\n", "fillerDigit>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMEI__SV__MobileIdentityV_fillerDigit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMEI__SV__MobileIdentityV_fillerDigit_descr_ = { "@BSSGP_Types.IMEI_SV_MobileIdentityV.fillerDigit", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &IMEI__SV__MobileIdentityV_fillerDigit_xer_, &BITSTRING_json_, &IMEI__SV__MobileIdentityV_fillerDigit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__SV__MobileIdentityV_fillerDigit_default_coding("RAW");
const TTCN_RAWdescriptor_t IMEI__SV__MobileIdentityV_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IMEI__SV__MobileIdentityV
const TTCN_Typedescriptor_t IMEI__SV__MobileIdentityV_descr_ = { "@BSSGP_Types.IMEI_SV_MobileIdentityV", NULL, &IMEI__SV__MobileIdentityV_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__SV__MobileIdentityV_default_coding("RAW");
UNIVERSAL_CHARSTRING OddEvenInd__Identity__BSSGP_imei__sv_default_coding("RAW");
UNIVERSAL_CHARSTRING OddEvenInd__Identity__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MobileIdentityV__BSSGP_oddEvenInd__identity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MobileIdentityV__BSSGP_oddEvenInd__identity
const TTCN_Typedescriptor_t MobileIdentityV__BSSGP_oddEvenInd__identity_descr_ = { "@BSSGP_Types.MobileIdentityV_BSSGP.oddEvenInd_identity", NULL, &MobileIdentityV__BSSGP_oddEvenInd__identity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MobileIdentityV__BSSGP_oddEvenInd__identity_default_coding("RAW");
const TTCN_RAWdescriptor_t MobileIdentityV__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MobileIdentityV__BSSGP
const TTCN_Typedescriptor_t MobileIdentityV__BSSGP_descr_ = { "@BSSGP_Types.MobileIdentityV_BSSGP", NULL, &MobileIdentityV__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MobileIdentityV__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Mobile__Id__BSSGP_mobile__Identity_default_coding("RAW");
const TTCN_RAWdescriptor_t Mobile__Id__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Mobile__Id__BSSGP
const TTCN_Typedescriptor_t Mobile__Id__BSSGP_descr_ = { "@BSSGP_Types.Mobile_Id_BSSGP", NULL, &Mobile__Id__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Mobile__Id__BSSGP_default_coding("RAW");
const XERdescriptor_t       MS__Bucket__Size_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MS__Bucket__Size_iEI_oer_ext_arr_[0] = {};
const int MS__Bucket__Size_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MS__Bucket__Size_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MS__Bucket__Size_iEI_oer_ext_arr_, 0, MS__Bucket__Size_iEI_oer_p_};
const TTCN_Typedescriptor_t MS__Bucket__Size_iEI_descr_ = { "@BSSGP_Types.MS_Bucket_Size.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MS__Bucket__Size_iEI_xer_, &OCTETSTRING_json_, &MS__Bucket__Size_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MS__Bucket__Size_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MS__Bucket__Size_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MS__Bucket__Size_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MS__Bucket__Size_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MS__Bucket__Size_ext_descr_ = { "@BSSGP_Types.MS_Bucket_Size.ext", &BITSTRING_ber_, &MS__Bucket__Size_ext_raw_, NULL, &MS__Bucket__Size_ext_xer_, &BITSTRING_json_, &MS__Bucket__Size_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MS__Bucket__Size_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MS__Bucket__Size_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MS__Bucket__Size_lengthIndicator
const TTCN_Typedescriptor_t MS__Bucket__Size_lengthIndicator_descr_ = { "@BSSGP_Types.MS_Bucket_Size.lengthIndicator", NULL, &MS__Bucket__Size_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MS__Bucket__Size_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MS__Bucket__Size_bmax_xer_ = { {"bmax>\n", "bmax>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MS__Bucket__Size_bmax_oer_ext_arr_[0] = {};
const int MS__Bucket__Size_bmax_oer_p_[0] = {};
const TTCN_OERdescriptor_t MS__Bucket__Size_bmax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MS__Bucket__Size_bmax_oer_ext_arr_, 0, MS__Bucket__Size_bmax_oer_p_};
const TTCN_Typedescriptor_t MS__Bucket__Size_bmax_descr_ = { "@BSSGP_Types.MS_Bucket_Size.bmax", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MS__Bucket__Size_bmax_xer_, &OCTETSTRING_json_, &MS__Bucket__Size_bmax_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MS__Bucket__Size_bmax_default_coding("RAW");
const TTCN_RAWdescriptor_t MS__Bucket__Size_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MS__Bucket__Size
const TTCN_Typedescriptor_t MS__Bucket__Size_descr_ = { "@BSSGP_Types.MS_Bucket_Size", NULL, &MS__Bucket__Size_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MS__Bucket__Size_default_coding("RAW");
const TTCN_RAWdescriptor_t MS__Radio__Access__Capability_iEI_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MS__Radio__Access__Capability_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MS__Radio__Access__Capability_iEI_oer_ext_arr_[0] = {};
const int MS__Radio__Access__Capability_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MS__Radio__Access__Capability_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MS__Radio__Access__Capability_iEI_oer_ext_arr_, 0, MS__Radio__Access__Capability_iEI_oer_p_};
const TTCN_Typedescriptor_t MS__Radio__Access__Capability_iEI_descr_ = { "@BSSGP_Types.MS_Radio_Access_Capability.iEI", &OCTETSTRING_ber_, &MS__Radio__Access__Capability_iEI_raw_, &OCTETSTRING_text_, &MS__Radio__Access__Capability_iEI_xer_, &OCTETSTRING_json_, &MS__Radio__Access__Capability_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MS__Radio__Access__Capability_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MS__Radio__Access__Capability_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MS__Radio__Access__Capability_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MS__Radio__Access__Capability_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MS__Radio__Access__Capability_ext_descr_ = { "@BSSGP_Types.MS_Radio_Access_Capability.ext", &BITSTRING_ber_, &MS__Radio__Access__Capability_ext_raw_, NULL, &MS__Radio__Access__Capability_ext_xer_, &BITSTRING_json_, &MS__Radio__Access__Capability_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MS__Radio__Access__Capability_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MS__Radio__Access__Capability_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MS__Radio__Access__Capability_lengthIndicator
const TTCN_Typedescriptor_t MS__Radio__Access__Capability_lengthIndicator_descr_ = { "@BSSGP_Types.MS_Radio_Access_Capability.lengthIndicator", NULL, &MS__Radio__Access__Capability_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MS__Radio__Access__Capability_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRadioAccessCapabilityV__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_REVERSE,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MSRadioAccessCapabilityV__BSSGP
const TTCN_Typedescriptor_t MSRadioAccessCapabilityV__BSSGP_descr_ = { "@BSSGP_Types.MSRadioAccessCapabilityV_BSSGP", NULL, &MSRadioAccessCapabilityV__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, &MSRACapabilityValuesRecord__BSSGP_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t MSRACapabilityValues__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MSRACapabilityValues__BSSGP
const TTCN_Typedescriptor_t MSRACapabilityValues__BSSGP_descr_ = { "@BSSGP_Types.MSRACapabilityValues_BSSGP", NULL, &MSRACapabilityValues__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t MSRACapabilityValuesExclude1111__BSSGP_accessTechnType_raw_ = {4,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MSRACapabilityValuesExclude1111__BSSGP_accessTechnType_xer_ = { {"accessTechnType>\n", "accessTechnType>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MSRACapabilityValuesExclude1111__BSSGP_accessTechnType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MSRACapabilityValuesExclude1111__BSSGP_accessTechnType_descr_ = { "@BSSGP_Types.MSRACapabilityValuesExclude1111_BSSGP.accessTechnType", &BITSTRING_ber_, &MSRACapabilityValuesExclude1111__BSSGP_accessTechnType_raw_, NULL, &MSRACapabilityValuesExclude1111__BSSGP_accessTechnType_xer_, &BITSTRING_json_, &MSRACapabilityValuesExclude1111__BSSGP_accessTechnType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValuesExclude1111__BSSGP_accessTechnType_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilitiesStruct__BSSGP_lengthIndicator_raw_ = {7,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapabilitiesStruct__BSSGP_lengthIndicator_xer_ = { {"lengthIndicator>\n", "lengthIndicator>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t AccessCapabilitiesStruct__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.AccessCapabilitiesStruct_BSSGP.lengthIndicator", &INTEGER_ber_, &AccessCapabilitiesStruct__BSSGP_lengthIndicator_raw_, &INTEGER_text_, &AccessCapabilitiesStruct__BSSGP_lengthIndicator_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilitiesStruct__BSSGP_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_rfPowerCapability_raw_ = {3,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapabilities__BSSGP_rfPowerCapability_xer_ = { {"rfPowerCapability>\n", "rfPowerCapability>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapabilities__BSSGP_rfPowerCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_rfPowerCapability_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP.rfPowerCapability", &BITSTRING_ber_, &AccessCapabilities__BSSGP_rfPowerCapability_raw_, NULL, &AccessCapabilities__BSSGP_rfPowerCapability_xer_, &BITSTRING_json_, &AccessCapabilities__BSSGP_rfPowerCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_rfPowerCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_presenceBitA5_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapabilities__BSSGP_presenceBitA5_xer_ = { {"presenceBitA5>\n", "presenceBitA5>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapabilities__BSSGP_presenceBitA5_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_presenceBitA5_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP.presenceBitA5", &BITSTRING_ber_, &AccessCapabilities__BSSGP_presenceBitA5_raw_, NULL, &AccessCapabilities__BSSGP_presenceBitA5_xer_, &BITSTRING_json_, &AccessCapabilities__BSSGP_presenceBitA5_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_presenceBitA5_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_esind_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapabilities__BSSGP_esind_xer_ = { {"esind>\n", "esind>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapabilities__BSSGP_esind_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_esind_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP.esind", &BITSTRING_ber_, &AccessCapabilities__BSSGP_esind_raw_, NULL, &AccessCapabilities__BSSGP_esind_xer_, &BITSTRING_json_, &AccessCapabilities__BSSGP_esind_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_esind_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_psbit_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapabilities__BSSGP_psbit_xer_ = { {"psbit>\n", "psbit>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapabilities__BSSGP_psbit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_psbit_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP.psbit", &BITSTRING_ber_, &AccessCapabilities__BSSGP_psbit_raw_, NULL, &AccessCapabilities__BSSGP_psbit_xer_, &BITSTRING_json_, &AccessCapabilities__BSSGP_psbit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_psbit_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_vgcs_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapabilities__BSSGP_vgcs_xer_ = { {"vgcs>\n", "vgcs>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapabilities__BSSGP_vgcs_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_vgcs_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP.vgcs", &BITSTRING_ber_, &AccessCapabilities__BSSGP_vgcs_raw_, NULL, &AccessCapabilities__BSSGP_vgcs_xer_, &BITSTRING_json_, &AccessCapabilities__BSSGP_vgcs_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_vgcs_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_vbs_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapabilities__BSSGP_vbs_xer_ = { {"vbs>\n", "vbs>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapabilities__BSSGP_vbs_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_vbs_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP.vbs", &BITSTRING_ber_, &AccessCapabilities__BSSGP_vbs_raw_, NULL, &AccessCapabilities__BSSGP_vbs_xer_, &BITSTRING_json_, &AccessCapabilities__BSSGP_vbs_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_vbs_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_presenceBitMultislot_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapabilities__BSSGP_presenceBitMultislot_xer_ = { {"presenceBitMultislot>\n", "presenceBitMultislot>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapabilities__BSSGP_presenceBitMultislot_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_presenceBitMultislot_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP.presenceBitMultislot", &BITSTRING_ber_, &AccessCapabilities__BSSGP_presenceBitMultislot_raw_, NULL, &AccessCapabilities__BSSGP_presenceBitMultislot_xer_, &BITSTRING_json_, &AccessCapabilities__BSSGP_presenceBitMultislot_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_presenceBitMultislot_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapabilities__BSSGP
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP", NULL, &AccessCapabilities__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t A5BITS__BSSGP_a51_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       A5BITS__BSSGP_a51_xer_ = { {"a51>\n", "a51>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t A5BITS__BSSGP_a51_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t A5BITS__BSSGP_a51_descr_ = { "@BSSGP_Types.A5BITS_BSSGP.a51", &BITSTRING_ber_, &A5BITS__BSSGP_a51_raw_, NULL, &A5BITS__BSSGP_a51_xer_, &BITSTRING_json_, &A5BITS__BSSGP_a51_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING A5BITS__BSSGP_a51_default_coding("RAW");
const TTCN_RAWdescriptor_t A5BITS__BSSGP_a52_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       A5BITS__BSSGP_a52_xer_ = { {"a52>\n", "a52>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t A5BITS__BSSGP_a52_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t A5BITS__BSSGP_a52_descr_ = { "@BSSGP_Types.A5BITS_BSSGP.a52", &BITSTRING_ber_, &A5BITS__BSSGP_a52_raw_, NULL, &A5BITS__BSSGP_a52_xer_, &BITSTRING_json_, &A5BITS__BSSGP_a52_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING A5BITS__BSSGP_a52_default_coding("RAW");
const TTCN_RAWdescriptor_t A5BITS__BSSGP_a53_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       A5BITS__BSSGP_a53_xer_ = { {"a53>\n", "a53>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t A5BITS__BSSGP_a53_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t A5BITS__BSSGP_a53_descr_ = { "@BSSGP_Types.A5BITS_BSSGP.a53", &BITSTRING_ber_, &A5BITS__BSSGP_a53_raw_, NULL, &A5BITS__BSSGP_a53_xer_, &BITSTRING_json_, &A5BITS__BSSGP_a53_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING A5BITS__BSSGP_a53_default_coding("RAW");
const TTCN_RAWdescriptor_t A5BITS__BSSGP_a54_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       A5BITS__BSSGP_a54_xer_ = { {"a54>\n", "a54>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t A5BITS__BSSGP_a54_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t A5BITS__BSSGP_a54_descr_ = { "@BSSGP_Types.A5BITS_BSSGP.a54", &BITSTRING_ber_, &A5BITS__BSSGP_a54_raw_, NULL, &A5BITS__BSSGP_a54_xer_, &BITSTRING_json_, &A5BITS__BSSGP_a54_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING A5BITS__BSSGP_a54_default_coding("RAW");
const TTCN_RAWdescriptor_t A5BITS__BSSGP_a55_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       A5BITS__BSSGP_a55_xer_ = { {"a55>\n", "a55>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t A5BITS__BSSGP_a55_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t A5BITS__BSSGP_a55_descr_ = { "@BSSGP_Types.A5BITS_BSSGP.a55", &BITSTRING_ber_, &A5BITS__BSSGP_a55_raw_, NULL, &A5BITS__BSSGP_a55_xer_, &BITSTRING_json_, &A5BITS__BSSGP_a55_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING A5BITS__BSSGP_a55_default_coding("RAW");
const TTCN_RAWdescriptor_t A5BITS__BSSGP_a56_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       A5BITS__BSSGP_a56_xer_ = { {"a56>\n", "a56>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t A5BITS__BSSGP_a56_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t A5BITS__BSSGP_a56_descr_ = { "@BSSGP_Types.A5BITS_BSSGP.a56", &BITSTRING_ber_, &A5BITS__BSSGP_a56_raw_, NULL, &A5BITS__BSSGP_a56_xer_, &BITSTRING_json_, &A5BITS__BSSGP_a56_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING A5BITS__BSSGP_a56_default_coding("RAW");
const TTCN_RAWdescriptor_t A5BITS__BSSGP_a57_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       A5BITS__BSSGP_a57_xer_ = { {"a57>\n", "a57>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t A5BITS__BSSGP_a57_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t A5BITS__BSSGP_a57_descr_ = { "@BSSGP_Types.A5BITS_BSSGP.a57", &BITSTRING_ber_, &A5BITS__BSSGP_a57_raw_, NULL, &A5BITS__BSSGP_a57_xer_, &BITSTRING_json_, &A5BITS__BSSGP_a57_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING A5BITS__BSSGP_a57_default_coding("RAW");
const TTCN_RAWdescriptor_t A5BITS__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for A5BITS__BSSGP
const TTCN_Typedescriptor_t A5BITS__BSSGP_descr_ = { "@BSSGP_Types.A5BITS_BSSGP", NULL, &A5BITS__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING A5BITS__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_a5bits_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapabilities__BSSGP_a5bits
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_a5bits_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP.a5bits", NULL, &AccessCapabilities__BSSGP_a5bits_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_a5bits_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__BSSGP_presenceBitHscsd_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__BSSGP_presenceBitHscsd_xer_ = { {"presenceBitHscsd>\n", "presenceBitHscsd>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__BSSGP_presenceBitHscsd_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__BSSGP_presenceBitHscsd_descr_ = { "@BSSGP_Types.MultislotCap_BSSGP.presenceBitHscsd", &BITSTRING_ber_, &MultislotCap__BSSGP_presenceBitHscsd_raw_, NULL, &MultislotCap__BSSGP_presenceBitHscsd_xer_, &BITSTRING_json_, &MultislotCap__BSSGP_presenceBitHscsd_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__BSSGP_presenceBitHscsd_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__BSSGP_presenceBitGprs_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__BSSGP_presenceBitGprs_xer_ = { {"presenceBitGprs>\n", "presenceBitGprs>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__BSSGP_presenceBitGprs_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__BSSGP_presenceBitGprs_descr_ = { "@BSSGP_Types.MultislotCap_BSSGP.presenceBitGprs", &BITSTRING_ber_, &MultislotCap__BSSGP_presenceBitGprs_raw_, NULL, &MultislotCap__BSSGP_presenceBitGprs_xer_, &BITSTRING_json_, &MultislotCap__BSSGP_presenceBitGprs_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__BSSGP_presenceBitGprs_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__BSSGP_presenceBitSms_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__BSSGP_presenceBitSms_xer_ = { {"presenceBitSms>\n", "presenceBitSms>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__BSSGP_presenceBitSms_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__BSSGP_presenceBitSms_descr_ = { "@BSSGP_Types.MultislotCap_BSSGP.presenceBitSms", &BITSTRING_ber_, &MultislotCap__BSSGP_presenceBitSms_raw_, NULL, &MultislotCap__BSSGP_presenceBitSms_xer_, &BITSTRING_json_, &MultislotCap__BSSGP_presenceBitSms_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__BSSGP_presenceBitSms_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCap__BSSGP
const TTCN_Typedescriptor_t MultislotCap__BSSGP_descr_ = { "@BSSGP_Types.MultislotCap_BSSGP", NULL, &MultislotCap__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t MultislotCap__BSSGP_hscsdmultislotclass_raw_ = {5,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__BSSGP_hscsdmultislotclass_xer_ = { {"hscsdmultislotclass>\n", "hscsdmultislotclass>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__BSSGP_hscsdmultislotclass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__BSSGP_hscsdmultislotclass_descr_ = { "@BSSGP_Types.MultislotCap_BSSGP.hscsdmultislotclass", &BITSTRING_ber_, &MultislotCap__BSSGP_hscsdmultislotclass_raw_, NULL, &MultislotCap__BSSGP_hscsdmultislotclass_xer_, &BITSTRING_json_, &MultislotCap__BSSGP_hscsdmultislotclass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__BSSGP_hscsdmultislotclass_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__GPRS__BSSGP_gprsmultislotclass_raw_ = {5,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__GPRS__BSSGP_gprsmultislotclass_xer_ = { {"gprsmultislotclass>\n", "gprsmultislotclass>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__GPRS__BSSGP_gprsmultislotclass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__GPRS__BSSGP_gprsmultislotclass_descr_ = { "@BSSGP_Types.MultislotCap_GPRS_BSSGP.gprsmultislotclass", &BITSTRING_ber_, &MultislotCap__GPRS__BSSGP_gprsmultislotclass_raw_, NULL, &MultislotCap__GPRS__BSSGP_gprsmultislotclass_xer_, &BITSTRING_json_, &MultislotCap__GPRS__BSSGP_gprsmultislotclass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__GPRS__BSSGP_gprsmultislotclass_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__GPRS__BSSGP_gprsextendeddynalloccap_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__GPRS__BSSGP_gprsextendeddynalloccap_xer_ = { {"gprsextendeddynalloccap>\n", "gprsextendeddynalloccap>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__GPRS__BSSGP_gprsextendeddynalloccap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__GPRS__BSSGP_gprsextendeddynalloccap_descr_ = { "@BSSGP_Types.MultislotCap_GPRS_BSSGP.gprsextendeddynalloccap", &BITSTRING_ber_, &MultislotCap__GPRS__BSSGP_gprsextendeddynalloccap_raw_, NULL, &MultislotCap__GPRS__BSSGP_gprsextendeddynalloccap_xer_, &BITSTRING_json_, &MultislotCap__GPRS__BSSGP_gprsextendeddynalloccap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__GPRS__BSSGP_gprsextendeddynalloccap_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__GPRS__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCap__GPRS__BSSGP
const TTCN_Typedescriptor_t MultislotCap__GPRS__BSSGP_descr_ = { "@BSSGP_Types.MultislotCap_GPRS_BSSGP", NULL, &MultislotCap__GPRS__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__GPRS__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__BSSGP_gprsmultislot_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCap__BSSGP_gprsmultislot
const TTCN_Typedescriptor_t MultislotCap__BSSGP_gprsmultislot_descr_ = { "@BSSGP_Types.MultislotCap_BSSGP.gprsmultislot", NULL, &MultislotCap__BSSGP_gprsmultislot_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__BSSGP_gprsmultislot_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__SMS__BSSGP_smsValue_raw_ = {4,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__SMS__BSSGP_smsValue_xer_ = { {"smsValue>\n", "smsValue>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__SMS__BSSGP_smsValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__SMS__BSSGP_smsValue_descr_ = { "@BSSGP_Types.MultislotCap_SMS_BSSGP.smsValue", &BITSTRING_ber_, &MultislotCap__SMS__BSSGP_smsValue_raw_, NULL, &MultislotCap__SMS__BSSGP_smsValue_xer_, &BITSTRING_json_, &MultislotCap__SMS__BSSGP_smsValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__SMS__BSSGP_smsValue_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__SMS__BSSGP_smValue_raw_ = {4,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__SMS__BSSGP_smValue_xer_ = { {"smValue>\n", "smValue>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__SMS__BSSGP_smValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__SMS__BSSGP_smValue_descr_ = { "@BSSGP_Types.MultislotCap_SMS_BSSGP.smValue", &BITSTRING_ber_, &MultislotCap__SMS__BSSGP_smValue_raw_, NULL, &MultislotCap__SMS__BSSGP_smValue_xer_, &BITSTRING_json_, &MultislotCap__SMS__BSSGP_smValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__SMS__BSSGP_smValue_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__SMS__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCap__SMS__BSSGP
const TTCN_Typedescriptor_t MultislotCap__SMS__BSSGP_descr_ = { "@BSSGP_Types.MultislotCap_SMS_BSSGP", NULL, &MultislotCap__SMS__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__SMS__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__BSSGP_multislotCap__SMS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCap__BSSGP_multislotCap__SMS
const TTCN_Typedescriptor_t MultislotCap__BSSGP_multislotCap__SMS_descr_ = { "@BSSGP_Types.MultislotCap_BSSGP.multislotCap_SMS", NULL, &MultislotCap__BSSGP_multislotCap__SMS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__BSSGP_multislotCap__SMS_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEcsdmulti_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEcsdmulti_xer_ = { {"presenceBitEcsdmulti>\n", "presenceBitEcsdmulti>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEcsdmulti_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEcsdmulti_descr_ = { "@BSSGP_Types.MultislotCapAdditionsAfterRel97_BSSGP.presenceBitEcsdmulti", &BITSTRING_ber_, &MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEcsdmulti_raw_, NULL, &MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEcsdmulti_xer_, &BITSTRING_json_, &MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEcsdmulti_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEcsdmulti_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEgprsmulti_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEgprsmulti_xer_ = { {"presenceBitEgprsmulti>\n", "presenceBitEgprsmulti>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEgprsmulti_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEgprsmulti_descr_ = { "@BSSGP_Types.MultislotCapAdditionsAfterRel97_BSSGP.presenceBitEgprsmulti", &BITSTRING_ber_, &MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEgprsmulti_raw_, NULL, &MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEgprsmulti_xer_, &BITSTRING_json_, &MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEgprsmulti_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCapAdditionsAfterRel97__BSSGP_presenceBitEgprsmulti_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_presenceBitDtmGprsmulti_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCapAdditionsAfterRel97__BSSGP_presenceBitDtmGprsmulti_xer_ = { {"presenceBitDtmGprsmulti>\n", "presenceBitDtmGprsmulti>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_presenceBitDtmGprsmulti_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_presenceBitDtmGprsmulti_descr_ = { "@BSSGP_Types.MultislotCapAdditionsAfterRel97_BSSGP.presenceBitDtmGprsmulti", &BITSTRING_ber_, &MultislotCapAdditionsAfterRel97__BSSGP_presenceBitDtmGprsmulti_raw_, NULL, &MultislotCapAdditionsAfterRel97__BSSGP_presenceBitDtmGprsmulti_xer_, &BITSTRING_json_, &MultislotCapAdditionsAfterRel97__BSSGP_presenceBitDtmGprsmulti_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCapAdditionsAfterRel97__BSSGP_presenceBitDtmGprsmulti_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCapAdditionsAfterRel97__BSSGP
const TTCN_Typedescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_descr_ = { "@BSSGP_Types.MultislotCapAdditionsAfterRel97_BSSGP", NULL, &MultislotCapAdditionsAfterRel97__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_ecsdmultislotclass_raw_ = {5,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCapAdditionsAfterRel97__BSSGP_ecsdmultislotclass_xer_ = { {"ecsdmultislotclass>\n", "ecsdmultislotclass>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_ecsdmultislotclass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_ecsdmultislotclass_descr_ = { "@BSSGP_Types.MultislotCapAdditionsAfterRel97_BSSGP.ecsdmultislotclass", &BITSTRING_ber_, &MultislotCapAdditionsAfterRel97__BSSGP_ecsdmultislotclass_raw_, NULL, &MultislotCapAdditionsAfterRel97__BSSGP_ecsdmultislotclass_xer_, &BITSTRING_json_, &MultislotCapAdditionsAfterRel97__BSSGP_ecsdmultislotclass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCapAdditionsAfterRel97__BSSGP_ecsdmultislotclass_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__EGPRS__BSSGP_egprsmultislotclass_raw_ = {5,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__EGPRS__BSSGP_egprsmultislotclass_xer_ = { {"egprsmultislotclass>\n", "egprsmultislotclass>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__EGPRS__BSSGP_egprsmultislotclass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__EGPRS__BSSGP_egprsmultislotclass_descr_ = { "@BSSGP_Types.MultislotCap_EGPRS_BSSGP.egprsmultislotclass", &BITSTRING_ber_, &MultislotCap__EGPRS__BSSGP_egprsmultislotclass_raw_, NULL, &MultislotCap__EGPRS__BSSGP_egprsmultislotclass_xer_, &BITSTRING_json_, &MultislotCap__EGPRS__BSSGP_egprsmultislotclass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__EGPRS__BSSGP_egprsmultislotclass_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__EGPRS__BSSGP_egprsextendeddynalloccap_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__EGPRS__BSSGP_egprsextendeddynalloccap_xer_ = { {"egprsextendeddynalloccap>\n", "egprsextendeddynalloccap>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__EGPRS__BSSGP_egprsextendeddynalloccap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__EGPRS__BSSGP_egprsextendeddynalloccap_descr_ = { "@BSSGP_Types.MultislotCap_EGPRS_BSSGP.egprsextendeddynalloccap", &BITSTRING_ber_, &MultislotCap__EGPRS__BSSGP_egprsextendeddynalloccap_raw_, NULL, &MultislotCap__EGPRS__BSSGP_egprsextendeddynalloccap_xer_, &BITSTRING_json_, &MultislotCap__EGPRS__BSSGP_egprsextendeddynalloccap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__EGPRS__BSSGP_egprsextendeddynalloccap_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__EGPRS__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCap__EGPRS__BSSGP
const TTCN_Typedescriptor_t MultislotCap__EGPRS__BSSGP_descr_ = { "@BSSGP_Types.MultislotCap_EGPRS_BSSGP", NULL, &MultislotCap__EGPRS__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__EGPRS__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_multislotCap__EGPRS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCapAdditionsAfterRel97__BSSGP_multislotCap__EGPRS
const TTCN_Typedescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_multislotCap__EGPRS_descr_ = { "@BSSGP_Types.MultislotCapAdditionsAfterRel97_BSSGP.multislotCap_EGPRS", NULL, &MultislotCapAdditionsAfterRel97__BSSGP_multislotCap__EGPRS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCapAdditionsAfterRel97__BSSGP_multislotCap__EGPRS_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_dtmgprsmultislotsubclass_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__dtmgprsmultislotsubclass__BSSGP_dtmgprsmultislotsubclass_xer_ = { {"dtmgprsmultislotsubclass>\n", "dtmgprsmultislotsubclass>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_dtmgprsmultislotsubclass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_dtmgprsmultislotsubclass_descr_ = { "@BSSGP_Types.MultislotCap_dtmgprsmultislotsubclass_BSSGP.dtmgprsmultislotsubclass", &BITSTRING_ber_, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_dtmgprsmultislotsubclass_raw_, NULL, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_dtmgprsmultislotsubclass_xer_, &BITSTRING_json_, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_dtmgprsmultislotsubclass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__dtmgprsmultislotsubclass__BSSGP_dtmgprsmultislotsubclass_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_singleSlotDTM_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__dtmgprsmultislotsubclass__BSSGP_singleSlotDTM_xer_ = { {"singleSlotDTM>\n", "singleSlotDTM>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_singleSlotDTM_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_singleSlotDTM_descr_ = { "@BSSGP_Types.MultislotCap_dtmgprsmultislotsubclass_BSSGP.singleSlotDTM", &BITSTRING_ber_, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_singleSlotDTM_raw_, NULL, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_singleSlotDTM_xer_, &BITSTRING_json_, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_singleSlotDTM_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__dtmgprsmultislotsubclass__BSSGP_singleSlotDTM_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_presenceBitDTM__EGPRSMultiSlot_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__dtmgprsmultislotsubclass__BSSGP_presenceBitDTM__EGPRSMultiSlot_xer_ = { {"presenceBitDTM_EGPRSMultiSlot>\n", "presenceBitDTM_EGPRSMultiSlot>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_presenceBitDTM__EGPRSMultiSlot_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_presenceBitDTM__EGPRSMultiSlot_descr_ = { "@BSSGP_Types.MultislotCap_dtmgprsmultislotsubclass_BSSGP.presenceBitDTM_EGPRSMultiSlot", &BITSTRING_ber_, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_presenceBitDTM__EGPRSMultiSlot_raw_, NULL, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_presenceBitDTM__EGPRSMultiSlot_xer_, &BITSTRING_json_, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_presenceBitDTM__EGPRSMultiSlot_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__dtmgprsmultislotsubclass__BSSGP_presenceBitDTM__EGPRSMultiSlot_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCap__dtmgprsmultislotsubclass__BSSGP
const TTCN_Typedescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_descr_ = { "@BSSGP_Types.MultislotCap_dtmgprsmultislotsubclass_BSSGP", NULL, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_dTM__EGPRSMultiSlot_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MultislotCap__dtmgprsmultislotsubclass__BSSGP_dTM__EGPRSMultiSlot_xer_ = { {"dTM_EGPRSMultiSlot>\n", "dTM_EGPRSMultiSlot>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_dTM__EGPRSMultiSlot_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MultislotCap__dtmgprsmultislotsubclass__BSSGP_dTM__EGPRSMultiSlot_descr_ = { "@BSSGP_Types.MultislotCap_dtmgprsmultislotsubclass_BSSGP.dTM_EGPRSMultiSlot", &BITSTRING_ber_, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_dTM__EGPRSMultiSlot_raw_, NULL, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_dTM__EGPRSMultiSlot_xer_, &BITSTRING_json_, &MultislotCap__dtmgprsmultislotsubclass__BSSGP_dTM__EGPRSMultiSlot_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__dtmgprsmultislotsubclass__BSSGP_dTM__EGPRSMultiSlot_default_coding("RAW");
UNIVERSAL_CHARSTRING MultislotCap__dtmgprsmultislotsubclass__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_multislotCapdtmgprsmultislotsubclass_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCapAdditionsAfterRel97__BSSGP_multislotCapdtmgprsmultislotsubclass
const TTCN_Typedescriptor_t MultislotCapAdditionsAfterRel97__BSSGP_multislotCapdtmgprsmultislotsubclass_descr_ = { "@BSSGP_Types.MultislotCapAdditionsAfterRel97_BSSGP.multislotCapdtmgprsmultislotsubclass", NULL, &MultislotCapAdditionsAfterRel97__BSSGP_multislotCapdtmgprsmultislotsubclass_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCapAdditionsAfterRel97__BSSGP_multislotCapdtmgprsmultislotsubclass_default_coding("RAW");
UNIVERSAL_CHARSTRING MultislotCapAdditionsAfterRel97__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MultislotCap__BSSGP_multislotCapAdditionsAfterRel97_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MultislotCap__BSSGP_multislotCapAdditionsAfterRel97
const TTCN_Typedescriptor_t MultislotCap__BSSGP_multislotCapAdditionsAfterRel97_descr_ = { "@BSSGP_Types.MultislotCap_BSSGP.multislotCapAdditionsAfterRel97", NULL, &MultislotCap__BSSGP_multislotCapAdditionsAfterRel97_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MultislotCap__BSSGP_multislotCapAdditionsAfterRel97_default_coding("RAW");
UNIVERSAL_CHARSTRING MultislotCap__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_multislotcap_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapabilities__BSSGP_multislotcap
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_multislotcap_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP.multislotcap", NULL, &AccessCapabilities__BSSGP_multislotcap_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_multislotcap_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel99__BSSGP_presenceBitPskpow_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel99__BSSGP_presenceBitPskpow_xer_ = { {"presenceBitPskpow>\n", "presenceBitPskpow>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel99__BSSGP_presenceBitPskpow_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel99__BSSGP_presenceBitPskpow_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel99_BSSGP.presenceBitPskpow", &BITSTRING_ber_, &AccessCapAdditionsRel99__BSSGP_presenceBitPskpow_raw_, NULL, &AccessCapAdditionsRel99__BSSGP_presenceBitPskpow_xer_, &BITSTRING_json_, &AccessCapAdditionsRel99__BSSGP_presenceBitPskpow_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel99__BSSGP_presenceBitPskpow_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel99__BSSGP_compactIntMeasurCap_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel99__BSSGP_compactIntMeasurCap_xer_ = { {"compactIntMeasurCap>\n", "compactIntMeasurCap>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel99__BSSGP_compactIntMeasurCap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel99__BSSGP_compactIntMeasurCap_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel99_BSSGP.compactIntMeasurCap", &BITSTRING_ber_, &AccessCapAdditionsRel99__BSSGP_compactIntMeasurCap_raw_, NULL, &AccessCapAdditionsRel99__BSSGP_compactIntMeasurCap_xer_, &BITSTRING_json_, &AccessCapAdditionsRel99__BSSGP_compactIntMeasurCap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel99__BSSGP_compactIntMeasurCap_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel99__BSSGP_revisionLevelInd_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel99__BSSGP_revisionLevelInd_xer_ = { {"revisionLevelInd>\n", "revisionLevelInd>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel99__BSSGP_revisionLevelInd_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel99__BSSGP_revisionLevelInd_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel99_BSSGP.revisionLevelInd", &BITSTRING_ber_, &AccessCapAdditionsRel99__BSSGP_revisionLevelInd_raw_, NULL, &AccessCapAdditionsRel99__BSSGP_revisionLevelInd_xer_, &BITSTRING_json_, &AccessCapAdditionsRel99__BSSGP_revisionLevelInd_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel99__BSSGP_revisionLevelInd_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel99__BSSGP_umtsfddRadAccTechCap_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel99__BSSGP_umtsfddRadAccTechCap_xer_ = { {"umtsfddRadAccTechCap>\n", "umtsfddRadAccTechCap>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel99__BSSGP_umtsfddRadAccTechCap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel99__BSSGP_umtsfddRadAccTechCap_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel99_BSSGP.umtsfddRadAccTechCap", &BITSTRING_ber_, &AccessCapAdditionsRel99__BSSGP_umtsfddRadAccTechCap_raw_, NULL, &AccessCapAdditionsRel99__BSSGP_umtsfddRadAccTechCap_xer_, &BITSTRING_json_, &AccessCapAdditionsRel99__BSSGP_umtsfddRadAccTechCap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel99__BSSGP_umtsfddRadAccTechCap_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel99__BSSGP_umtstddRadAccTechCap_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel99__BSSGP_umtstddRadAccTechCap_xer_ = { {"umtstddRadAccTechCap>\n", "umtstddRadAccTechCap>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel99__BSSGP_umtstddRadAccTechCap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel99__BSSGP_umtstddRadAccTechCap_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel99_BSSGP.umtstddRadAccTechCap", &BITSTRING_ber_, &AccessCapAdditionsRel99__BSSGP_umtstddRadAccTechCap_raw_, NULL, &AccessCapAdditionsRel99__BSSGP_umtstddRadAccTechCap_xer_, &BITSTRING_json_, &AccessCapAdditionsRel99__BSSGP_umtstddRadAccTechCap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel99__BSSGP_umtstddRadAccTechCap_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel99__BSSGP_cdma2kRadAccTechCap_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel99__BSSGP_cdma2kRadAccTechCap_xer_ = { {"cdma2kRadAccTechCap>\n", "cdma2kRadAccTechCap>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel99__BSSGP_cdma2kRadAccTechCap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel99__BSSGP_cdma2kRadAccTechCap_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel99_BSSGP.cdma2kRadAccTechCap", &BITSTRING_ber_, &AccessCapAdditionsRel99__BSSGP_cdma2kRadAccTechCap_raw_, NULL, &AccessCapAdditionsRel99__BSSGP_cdma2kRadAccTechCap_xer_, &BITSTRING_json_, &AccessCapAdditionsRel99__BSSGP_cdma2kRadAccTechCap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel99__BSSGP_cdma2kRadAccTechCap_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel99__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel99__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsRel99__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel99_BSSGP", NULL, &AccessCapAdditionsRel99__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsRel99__BSSGP_pskpowercap_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel99__BSSGP_pskpowercap_xer_ = { {"pskpowercap>\n", "pskpowercap>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel99__BSSGP_pskpowercap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel99__BSSGP_pskpowercap_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel99_BSSGP.pskpowercap", &BITSTRING_ber_, &AccessCapAdditionsRel99__BSSGP_pskpowercap_raw_, NULL, &AccessCapAdditionsRel99__BSSGP_pskpowercap_xer_, &BITSTRING_json_, &AccessCapAdditionsRel99__BSSGP_pskpowercap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel99__BSSGP_pskpowercap_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsRel99__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel97__BSSGP_accessCapAdditionsRel99_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel97__BSSGP_accessCapAdditionsRel99
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel97__BSSGP_accessCapAdditionsRel99_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel97_BSSGP.accessCapAdditionsRel99", NULL, &AccessCapAdditionsAfterRel97__BSSGP_accessCapAdditionsRel99_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel97__BSSGP_accessCapAdditionsRel99_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel97__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel97__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel97__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel97_BSSGP", NULL, &AccessCapAdditionsAfterRel97__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsRel4__BSSGP_umts128RadAccTechCap_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel4__BSSGP_umts128RadAccTechCap_xer_ = { {"umts128RadAccTechCap>\n", "umts128RadAccTechCap>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel4__BSSGP_umts128RadAccTechCap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel4__BSSGP_umts128RadAccTechCap_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel4_BSSGP.umts128RadAccTechCap", &BITSTRING_ber_, &AccessCapAdditionsRel4__BSSGP_umts128RadAccTechCap_raw_, NULL, &AccessCapAdditionsRel4__BSSGP_umts128RadAccTechCap_xer_, &BITSTRING_json_, &AccessCapAdditionsRel4__BSSGP_umts128RadAccTechCap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel4__BSSGP_umts128RadAccTechCap_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel4__BSSGP_geranFeaturePackage_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel4__BSSGP_geranFeaturePackage_xer_ = { {"geranFeaturePackage>\n", "geranFeaturePackage>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel4__BSSGP_geranFeaturePackage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel4__BSSGP_geranFeaturePackage_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel4_BSSGP.geranFeaturePackage", &BITSTRING_ber_, &AccessCapAdditionsRel4__BSSGP_geranFeaturePackage_raw_, NULL, &AccessCapAdditionsRel4__BSSGP_geranFeaturePackage_xer_, &BITSTRING_json_, &AccessCapAdditionsRel4__BSSGP_geranFeaturePackage_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel4__BSSGP_geranFeaturePackage_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel4__BSSGP_presenceBitExtendedDTM_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel4__BSSGP_presenceBitExtendedDTM_xer_ = { {"presenceBitExtendedDTM>\n", "presenceBitExtendedDTM>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel4__BSSGP_presenceBitExtendedDTM_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel4__BSSGP_presenceBitExtendedDTM_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel4_BSSGP.presenceBitExtendedDTM", &BITSTRING_ber_, &AccessCapAdditionsRel4__BSSGP_presenceBitExtendedDTM_raw_, NULL, &AccessCapAdditionsRel4__BSSGP_presenceBitExtendedDTM_xer_, &BITSTRING_json_, &AccessCapAdditionsRel4__BSSGP_presenceBitExtendedDTM_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel4__BSSGP_presenceBitExtendedDTM_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel4__BSSGP_modulationBasedMultislotClass_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel4__BSSGP_modulationBasedMultislotClass_xer_ = { {"modulationBasedMultislotClass>\n", "modulationBasedMultislotClass>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel4__BSSGP_modulationBasedMultislotClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel4__BSSGP_modulationBasedMultislotClass_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel4_BSSGP.modulationBasedMultislotClass", &BITSTRING_ber_, &AccessCapAdditionsRel4__BSSGP_modulationBasedMultislotClass_raw_, NULL, &AccessCapAdditionsRel4__BSSGP_modulationBasedMultislotClass_xer_, &BITSTRING_json_, &AccessCapAdditionsRel4__BSSGP_modulationBasedMultislotClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel4__BSSGP_modulationBasedMultislotClass_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel4__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel4__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsRel4__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel4_BSSGP", NULL, &AccessCapAdditionsRel4__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t ExtendedDTM__BSSGP_ExtendedDTM__GPRSMultislot_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtendedDTM__BSSGP_ExtendedDTM__GPRSMultislot_xer_ = { {"ExtendedDTM_GPRSMultislot>\n", "ExtendedDTM_GPRSMultislot>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtendedDTM__BSSGP_ExtendedDTM__GPRSMultislot_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtendedDTM__BSSGP_ExtendedDTM__GPRSMultislot_descr_ = { "@BSSGP_Types.ExtendedDTM_BSSGP.ExtendedDTM_GPRSMultislot", &BITSTRING_ber_, &ExtendedDTM__BSSGP_ExtendedDTM__GPRSMultislot_raw_, NULL, &ExtendedDTM__BSSGP_ExtendedDTM__GPRSMultislot_xer_, &BITSTRING_json_, &ExtendedDTM__BSSGP_ExtendedDTM__GPRSMultislot_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtendedDTM__BSSGP_ExtendedDTM__GPRSMultislot_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtendedDTM__BSSGP_ExtendedDTM__EGPRSMultislot_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       ExtendedDTM__BSSGP_ExtendedDTM__EGPRSMultislot_xer_ = { {"ExtendedDTM_EGPRSMultislot>\n", "ExtendedDTM_EGPRSMultislot>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ExtendedDTM__BSSGP_ExtendedDTM__EGPRSMultislot_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ExtendedDTM__BSSGP_ExtendedDTM__EGPRSMultislot_descr_ = { "@BSSGP_Types.ExtendedDTM_BSSGP.ExtendedDTM_EGPRSMultislot", &BITSTRING_ber_, &ExtendedDTM__BSSGP_ExtendedDTM__EGPRSMultislot_raw_, NULL, &ExtendedDTM__BSSGP_ExtendedDTM__EGPRSMultislot_xer_, &BITSTRING_json_, &ExtendedDTM__BSSGP_ExtendedDTM__EGPRSMultislot_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtendedDTM__BSSGP_ExtendedDTM__EGPRSMultislot_default_coding("RAW");
const TTCN_RAWdescriptor_t ExtendedDTM__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ExtendedDTM__BSSGP
const TTCN_Typedescriptor_t ExtendedDTM__BSSGP_descr_ = { "@BSSGP_Types.ExtendedDTM_BSSGP", NULL, &ExtendedDTM__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ExtendedDTM__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel4__BSSGP_extendedDTM_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel4__BSSGP_extendedDTM
const TTCN_Typedescriptor_t AccessCapAdditionsRel4__BSSGP_extendedDTM_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel4_BSSGP.extendedDTM", NULL, &AccessCapAdditionsRel4__BSSGP_extendedDTM_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel4__BSSGP_extendedDTM_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsRel4__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel99__BSSGP_accessCapAdditionsRel4_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel99__BSSGP_accessCapAdditionsRel4
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel99__BSSGP_accessCapAdditionsRel4_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel99_BSSGP.accessCapAdditionsRel4", NULL, &AccessCapAdditionsAfterRel99__BSSGP_accessCapAdditionsRel4_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel99__BSSGP_accessCapAdditionsRel4_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel99__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel99__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel99__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel99_BSSGP", NULL, &AccessCapAdditionsAfterRel99__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsRel5__BSSGP_presenceBitHighMultislotCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel5__BSSGP_presenceBitHighMultislotCapability_xer_ = { {"presenceBitHighMultislotCapability>\n", "presenceBitHighMultislotCapability>\n"}, {36, 36}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel5__BSSGP_presenceBitHighMultislotCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel5__BSSGP_presenceBitHighMultislotCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel5_BSSGP.presenceBitHighMultislotCapability", &BITSTRING_ber_, &AccessCapAdditionsRel5__BSSGP_presenceBitHighMultislotCapability_raw_, NULL, &AccessCapAdditionsRel5__BSSGP_presenceBitHighMultislotCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel5__BSSGP_presenceBitHighMultislotCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel5__BSSGP_presenceBitHighMultislotCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel5__BSSGP_presenceBitGeranIuModeCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel5__BSSGP_presenceBitGeranIuModeCapability_xer_ = { {"presenceBitGeranIuModeCapability>\n", "presenceBitGeranIuModeCapability>\n"}, {34, 34}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel5__BSSGP_presenceBitGeranIuModeCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel5__BSSGP_presenceBitGeranIuModeCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel5_BSSGP.presenceBitGeranIuModeCapability", &BITSTRING_ber_, &AccessCapAdditionsRel5__BSSGP_presenceBitGeranIuModeCapability_raw_, NULL, &AccessCapAdditionsRel5__BSSGP_presenceBitGeranIuModeCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel5__BSSGP_presenceBitGeranIuModeCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel5__BSSGP_presenceBitGeranIuModeCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel5__BSSGP_gMSKMultislotPowerProfile_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel5__BSSGP_gMSKMultislotPowerProfile_xer_ = { {"gMSKMultislotPowerProfile>\n", "gMSKMultislotPowerProfile>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel5__BSSGP_gMSKMultislotPowerProfile_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel5__BSSGP_gMSKMultislotPowerProfile_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel5_BSSGP.gMSKMultislotPowerProfile", &BITSTRING_ber_, &AccessCapAdditionsRel5__BSSGP_gMSKMultislotPowerProfile_raw_, NULL, &AccessCapAdditionsRel5__BSSGP_gMSKMultislotPowerProfile_xer_, &BITSTRING_json_, &AccessCapAdditionsRel5__BSSGP_gMSKMultislotPowerProfile_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel5__BSSGP_gMSKMultislotPowerProfile_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel5__BSSGP_eightPSKMultislotPowerProfile_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel5__BSSGP_eightPSKMultislotPowerProfile_xer_ = { {"eightPSKMultislotPowerProfile>\n", "eightPSKMultislotPowerProfile>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel5__BSSGP_eightPSKMultislotPowerProfile_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel5__BSSGP_eightPSKMultislotPowerProfile_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel5_BSSGP.eightPSKMultislotPowerProfile", &BITSTRING_ber_, &AccessCapAdditionsRel5__BSSGP_eightPSKMultislotPowerProfile_raw_, NULL, &AccessCapAdditionsRel5__BSSGP_eightPSKMultislotPowerProfile_xer_, &BITSTRING_json_, &AccessCapAdditionsRel5__BSSGP_eightPSKMultislotPowerProfile_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel5__BSSGP_eightPSKMultislotPowerProfile_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel5__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel5__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsRel5__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel5_BSSGP", NULL, &AccessCapAdditionsRel5__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsRel5__BSSGP_highMultislotCapability_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel5__BSSGP_highMultislotCapability_xer_ = { {"highMultislotCapability>\n", "highMultislotCapability>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel5__BSSGP_highMultislotCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel5__BSSGP_highMultislotCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel5_BSSGP.highMultislotCapability", &BITSTRING_ber_, &AccessCapAdditionsRel5__BSSGP_highMultislotCapability_raw_, NULL, &AccessCapAdditionsRel5__BSSGP_highMultislotCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel5__BSSGP_highMultislotCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel5__BSSGP_highMultislotCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t GeranIuModeCap__BSSGP_lengthIndicator_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GeranIuModeCap__BSSGP_lengthIndicator_xer_ = { {"lengthIndicator>\n", "lengthIndicator>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GeranIuModeCap__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.GeranIuModeCap_BSSGP.lengthIndicator", &INTEGER_ber_, &GeranIuModeCap__BSSGP_lengthIndicator_raw_, &INTEGER_text_, &GeranIuModeCap__BSSGP_lengthIndicator_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GeranIuModeCap__BSSGP_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t GeranIuModeCap__BSSGP_fLOIuCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GeranIuModeCap__BSSGP_fLOIuCapability_xer_ = { {"fLOIuCapability>\n", "fLOIuCapability>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GeranIuModeCap__BSSGP_fLOIuCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GeranIuModeCap__BSSGP_fLOIuCapability_descr_ = { "@BSSGP_Types.GeranIuModeCap_BSSGP.fLOIuCapability", &BITSTRING_ber_, &GeranIuModeCap__BSSGP_fLOIuCapability_raw_, NULL, &GeranIuModeCap__BSSGP_fLOIuCapability_xer_, &BITSTRING_json_, &GeranIuModeCap__BSSGP_fLOIuCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GeranIuModeCap__BSSGP_fLOIuCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t GeranIuModeCap__BSSGP_spare__bits_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GeranIuModeCap__BSSGP_spare__bits_xer_ = { {"spare_bits>\n", "spare_bits>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GeranIuModeCap__BSSGP_spare__bits_descr_ = { "@BSSGP_Types.GeranIuModeCap_BSSGP.spare_bits", &BITSTRING_ber_, &GeranIuModeCap__BSSGP_spare__bits_raw_, NULL, &GeranIuModeCap__BSSGP_spare__bits_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GeranIuModeCap__BSSGP_spare__bits_default_coding("RAW");
const TTCN_RAWdescriptor_t GeranIuModeCap__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GeranIuModeCap__BSSGP
const TTCN_Typedescriptor_t GeranIuModeCap__BSSGP_descr_ = { "@BSSGP_Types.GeranIuModeCap_BSSGP", NULL, &GeranIuModeCap__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GeranIuModeCap__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel5__BSSGP_geranIuModeCap_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel5__BSSGP_geranIuModeCap
const TTCN_Typedescriptor_t AccessCapAdditionsRel5__BSSGP_geranIuModeCap_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel5_BSSGP.geranIuModeCap", NULL, &AccessCapAdditionsRel5__BSSGP_geranIuModeCap_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel5__BSSGP_geranIuModeCap_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsRel5__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel4__BSSGP_accessCapAdditionsRel5_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel4__BSSGP_accessCapAdditionsRel5
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel4__BSSGP_accessCapAdditionsRel5_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel4_BSSGP.accessCapAdditionsRel5", NULL, &AccessCapAdditionsAfterRel4__BSSGP_accessCapAdditionsRel5_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel4__BSSGP_accessCapAdditionsRel5_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel4__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel4__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel4__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel4_BSSGP", NULL, &AccessCapAdditionsAfterRel4__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsRel6__BSSGP_multipleTBFCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel6__BSSGP_multipleTBFCapability_xer_ = { {"multipleTBFCapability>\n", "multipleTBFCapability>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel6__BSSGP_multipleTBFCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel6__BSSGP_multipleTBFCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel6_BSSGP.multipleTBFCapability", &BITSTRING_ber_, &AccessCapAdditionsRel6__BSSGP_multipleTBFCapability_raw_, NULL, &AccessCapAdditionsRel6__BSSGP_multipleTBFCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel6__BSSGP_multipleTBFCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel6__BSSGP_multipleTBFCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel6__BSSGP_downlinkAdvancedReceiverPerformance_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel6__BSSGP_downlinkAdvancedReceiverPerformance_xer_ = { {"downlinkAdvancedReceiverPerformance>\n", "downlinkAdvancedReceiverPerformance>\n"}, {37, 37}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel6__BSSGP_downlinkAdvancedReceiverPerformance_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel6__BSSGP_downlinkAdvancedReceiverPerformance_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel6_BSSGP.downlinkAdvancedReceiverPerformance", &BITSTRING_ber_, &AccessCapAdditionsRel6__BSSGP_downlinkAdvancedReceiverPerformance_raw_, NULL, &AccessCapAdditionsRel6__BSSGP_downlinkAdvancedReceiverPerformance_xer_, &BITSTRING_json_, &AccessCapAdditionsRel6__BSSGP_downlinkAdvancedReceiverPerformance_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel6__BSSGP_downlinkAdvancedReceiverPerformance_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel6__BSSGP_extendedRLCMACCtrlMsgSegmentationCap_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel6__BSSGP_extendedRLCMACCtrlMsgSegmentationCap_xer_ = { {"extendedRLCMACCtrlMsgSegmentationCap>\n", "extendedRLCMACCtrlMsgSegmentationCap>\n"}, {38, 38}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel6__BSSGP_extendedRLCMACCtrlMsgSegmentationCap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel6__BSSGP_extendedRLCMACCtrlMsgSegmentationCap_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel6_BSSGP.extendedRLCMACCtrlMsgSegmentationCap", &BITSTRING_ber_, &AccessCapAdditionsRel6__BSSGP_extendedRLCMACCtrlMsgSegmentationCap_raw_, NULL, &AccessCapAdditionsRel6__BSSGP_extendedRLCMACCtrlMsgSegmentationCap_xer_, &BITSTRING_json_, &AccessCapAdditionsRel6__BSSGP_extendedRLCMACCtrlMsgSegmentationCap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel6__BSSGP_extendedRLCMACCtrlMsgSegmentationCap_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel6__BSSGP_dTMEnhancementsCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel6__BSSGP_dTMEnhancementsCapability_xer_ = { {"dTMEnhancementsCapability>\n", "dTMEnhancementsCapability>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel6__BSSGP_dTMEnhancementsCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel6__BSSGP_dTMEnhancementsCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel6_BSSGP.dTMEnhancementsCapability", &BITSTRING_ber_, &AccessCapAdditionsRel6__BSSGP_dTMEnhancementsCapability_raw_, NULL, &AccessCapAdditionsRel6__BSSGP_dTMEnhancementsCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel6__BSSGP_dTMEnhancementsCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel6__BSSGP_dTMEnhancementsCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel6__BSSGP_presenceBitDTMGPRSHighMultiSlotClass_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel6__BSSGP_presenceBitDTMGPRSHighMultiSlotClass_xer_ = { {"presenceBitDTMGPRSHighMultiSlotClass>\n", "presenceBitDTMGPRSHighMultiSlotClass>\n"}, {38, 38}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel6__BSSGP_presenceBitDTMGPRSHighMultiSlotClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel6__BSSGP_presenceBitDTMGPRSHighMultiSlotClass_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel6_BSSGP.presenceBitDTMGPRSHighMultiSlotClass", &BITSTRING_ber_, &AccessCapAdditionsRel6__BSSGP_presenceBitDTMGPRSHighMultiSlotClass_raw_, NULL, &AccessCapAdditionsRel6__BSSGP_presenceBitDTMGPRSHighMultiSlotClass_xer_, &BITSTRING_json_, &AccessCapAdditionsRel6__BSSGP_presenceBitDTMGPRSHighMultiSlotClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel6__BSSGP_presenceBitDTMGPRSHighMultiSlotClass_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel6__BSSGP_pSHandoverCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel6__BSSGP_pSHandoverCapability_xer_ = { {"pSHandoverCapability>\n", "pSHandoverCapability>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel6__BSSGP_pSHandoverCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel6__BSSGP_pSHandoverCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel6_BSSGP.pSHandoverCapability", &BITSTRING_ber_, &AccessCapAdditionsRel6__BSSGP_pSHandoverCapability_raw_, NULL, &AccessCapAdditionsRel6__BSSGP_pSHandoverCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel6__BSSGP_pSHandoverCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel6__BSSGP_pSHandoverCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel6__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel6__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsRel6__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel6_BSSGP", NULL, &AccessCapAdditionsRel6__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_dTMGPRSHighMultiSlotClassValue_raw_ = {3,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DTMGPRSHighMultiSlotClass__BSSGP_dTMGPRSHighMultiSlotClassValue_xer_ = { {"dTMGPRSHighMultiSlotClassValue>\n", "dTMGPRSHighMultiSlotClassValue>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_dTMGPRSHighMultiSlotClassValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_dTMGPRSHighMultiSlotClassValue_descr_ = { "@BSSGP_Types.DTMGPRSHighMultiSlotClass_BSSGP.dTMGPRSHighMultiSlotClassValue", &BITSTRING_ber_, &DTMGPRSHighMultiSlotClass__BSSGP_dTMGPRSHighMultiSlotClassValue_raw_, NULL, &DTMGPRSHighMultiSlotClass__BSSGP_dTMGPRSHighMultiSlotClassValue_xer_, &BITSTRING_json_, &DTMGPRSHighMultiSlotClass__BSSGP_dTMGPRSHighMultiSlotClassValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DTMGPRSHighMultiSlotClass__BSSGP_dTMGPRSHighMultiSlotClassValue_default_coding("RAW");
const TTCN_RAWdescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_presenceBitDTMEGPRSHighMultiSlotClass_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DTMGPRSHighMultiSlotClass__BSSGP_presenceBitDTMEGPRSHighMultiSlotClass_xer_ = { {"presenceBitDTMEGPRSHighMultiSlotClass>\n", "presenceBitDTMEGPRSHighMultiSlotClass>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_presenceBitDTMEGPRSHighMultiSlotClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_presenceBitDTMEGPRSHighMultiSlotClass_descr_ = { "@BSSGP_Types.DTMGPRSHighMultiSlotClass_BSSGP.presenceBitDTMEGPRSHighMultiSlotClass", &BITSTRING_ber_, &DTMGPRSHighMultiSlotClass__BSSGP_presenceBitDTMEGPRSHighMultiSlotClass_raw_, NULL, &DTMGPRSHighMultiSlotClass__BSSGP_presenceBitDTMEGPRSHighMultiSlotClass_xer_, &BITSTRING_json_, &DTMGPRSHighMultiSlotClass__BSSGP_presenceBitDTMEGPRSHighMultiSlotClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DTMGPRSHighMultiSlotClass__BSSGP_presenceBitDTMEGPRSHighMultiSlotClass_default_coding("RAW");
const TTCN_RAWdescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for DTMGPRSHighMultiSlotClass__BSSGP
const TTCN_Typedescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_descr_ = { "@BSSGP_Types.DTMGPRSHighMultiSlotClass_BSSGP", NULL, &DTMGPRSHighMultiSlotClass__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_dTMEGPRSHighMultiSlotClassValue_raw_ = {3,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DTMGPRSHighMultiSlotClass__BSSGP_dTMEGPRSHighMultiSlotClassValue_xer_ = { {"dTMEGPRSHighMultiSlotClassValue>\n", "dTMEGPRSHighMultiSlotClassValue>\n"}, {33, 33}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_dTMEGPRSHighMultiSlotClassValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DTMGPRSHighMultiSlotClass__BSSGP_dTMEGPRSHighMultiSlotClassValue_descr_ = { "@BSSGP_Types.DTMGPRSHighMultiSlotClass_BSSGP.dTMEGPRSHighMultiSlotClassValue", &BITSTRING_ber_, &DTMGPRSHighMultiSlotClass__BSSGP_dTMEGPRSHighMultiSlotClassValue_raw_, NULL, &DTMGPRSHighMultiSlotClass__BSSGP_dTMEGPRSHighMultiSlotClassValue_xer_, &BITSTRING_json_, &DTMGPRSHighMultiSlotClass__BSSGP_dTMEGPRSHighMultiSlotClassValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DTMGPRSHighMultiSlotClass__BSSGP_dTMEGPRSHighMultiSlotClassValue_default_coding("RAW");
UNIVERSAL_CHARSTRING DTMGPRSHighMultiSlotClass__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel6__BSSGP_dTMGPRSHighMultiSlotClass_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel6__BSSGP_dTMGPRSHighMultiSlotClass
const TTCN_Typedescriptor_t AccessCapAdditionsRel6__BSSGP_dTMGPRSHighMultiSlotClass_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel6_BSSGP.dTMGPRSHighMultiSlotClass", NULL, &AccessCapAdditionsRel6__BSSGP_dTMGPRSHighMultiSlotClass_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel6__BSSGP_dTMGPRSHighMultiSlotClass_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsRel6__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel5__BSSGP_accessCapAdditionsRel6_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel5__BSSGP_accessCapAdditionsRel6
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel5__BSSGP_accessCapAdditionsRel6_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel5_BSSGP.accessCapAdditionsRel6", NULL, &AccessCapAdditionsAfterRel5__BSSGP_accessCapAdditionsRel6_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel5__BSSGP_accessCapAdditionsRel6_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel5__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel5__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel5__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel5_BSSGP", NULL, &AccessCapAdditionsAfterRel5__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsRel7__BSSGP_dTMHandoverCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel7__BSSGP_dTMHandoverCapability_xer_ = { {"dTMHandoverCapability>\n", "dTMHandoverCapability>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel7__BSSGP_dTMHandoverCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel7__BSSGP_dTMHandoverCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel7_BSSGP.dTMHandoverCapability", &BITSTRING_ber_, &AccessCapAdditionsRel7__BSSGP_dTMHandoverCapability_raw_, NULL, &AccessCapAdditionsRel7__BSSGP_dTMHandoverCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel7__BSSGP_dTMHandoverCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel7__BSSGP_dTMHandoverCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel7__BSSGP_presenceBitDownlinkDualCarrier_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel7__BSSGP_presenceBitDownlinkDualCarrier_xer_ = { {"presenceBitDownlinkDualCarrier>\n", "presenceBitDownlinkDualCarrier>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel7__BSSGP_presenceBitDownlinkDualCarrier_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel7__BSSGP_presenceBitDownlinkDualCarrier_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel7_BSSGP.presenceBitDownlinkDualCarrier", &BITSTRING_ber_, &AccessCapAdditionsRel7__BSSGP_presenceBitDownlinkDualCarrier_raw_, NULL, &AccessCapAdditionsRel7__BSSGP_presenceBitDownlinkDualCarrier_xer_, &BITSTRING_json_, &AccessCapAdditionsRel7__BSSGP_presenceBitDownlinkDualCarrier_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel7__BSSGP_presenceBitDownlinkDualCarrier_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel7__BSSGP_flexibleTimeslotAssignment_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel7__BSSGP_flexibleTimeslotAssignment_xer_ = { {"flexibleTimeslotAssignment>\n", "flexibleTimeslotAssignment>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel7__BSSGP_flexibleTimeslotAssignment_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel7__BSSGP_flexibleTimeslotAssignment_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel7_BSSGP.flexibleTimeslotAssignment", &BITSTRING_ber_, &AccessCapAdditionsRel7__BSSGP_flexibleTimeslotAssignment_raw_, NULL, &AccessCapAdditionsRel7__BSSGP_flexibleTimeslotAssignment_xer_, &BITSTRING_json_, &AccessCapAdditionsRel7__BSSGP_flexibleTimeslotAssignment_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel7__BSSGP_flexibleTimeslotAssignment_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel7__BSSGP_gANPSHandoverCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel7__BSSGP_gANPSHandoverCapability_xer_ = { {"gANPSHandoverCapability>\n", "gANPSHandoverCapability>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel7__BSSGP_gANPSHandoverCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel7__BSSGP_gANPSHandoverCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel7_BSSGP.gANPSHandoverCapability", &BITSTRING_ber_, &AccessCapAdditionsRel7__BSSGP_gANPSHandoverCapability_raw_, NULL, &AccessCapAdditionsRel7__BSSGP_gANPSHandoverCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel7__BSSGP_gANPSHandoverCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel7__BSSGP_gANPSHandoverCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel7__BSSGP_rLCNonPersistentMode_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel7__BSSGP_rLCNonPersistentMode_xer_ = { {"rLCNonPersistentMode>\n", "rLCNonPersistentMode>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel7__BSSGP_rLCNonPersistentMode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel7__BSSGP_rLCNonPersistentMode_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel7_BSSGP.rLCNonPersistentMode", &BITSTRING_ber_, &AccessCapAdditionsRel7__BSSGP_rLCNonPersistentMode_raw_, NULL, &AccessCapAdditionsRel7__BSSGP_rLCNonPersistentMode_xer_, &BITSTRING_json_, &AccessCapAdditionsRel7__BSSGP_rLCNonPersistentMode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel7__BSSGP_rLCNonPersistentMode_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel7__BSSGP_reducedLatencyEGPRSCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel7__BSSGP_reducedLatencyEGPRSCapability_xer_ = { {"reducedLatencyEGPRSCapability>\n", "reducedLatencyEGPRSCapability>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel7__BSSGP_reducedLatencyEGPRSCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel7__BSSGP_reducedLatencyEGPRSCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel7_BSSGP.reducedLatencyEGPRSCapability", &BITSTRING_ber_, &AccessCapAdditionsRel7__BSSGP_reducedLatencyEGPRSCapability_raw_, NULL, &AccessCapAdditionsRel7__BSSGP_reducedLatencyEGPRSCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel7__BSSGP_reducedLatencyEGPRSCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel7__BSSGP_reducedLatencyEGPRSCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel7__BSSGP_uplinkEGPRS2_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel7__BSSGP_uplinkEGPRS2_xer_ = { {"uplinkEGPRS2>\n", "uplinkEGPRS2>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel7__BSSGP_uplinkEGPRS2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel7__BSSGP_uplinkEGPRS2_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel7_BSSGP.uplinkEGPRS2", &BITSTRING_ber_, &AccessCapAdditionsRel7__BSSGP_uplinkEGPRS2_raw_, NULL, &AccessCapAdditionsRel7__BSSGP_uplinkEGPRS2_xer_, &BITSTRING_json_, &AccessCapAdditionsRel7__BSSGP_uplinkEGPRS2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel7__BSSGP_uplinkEGPRS2_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel7__BSSGP_downlinkEGPRS2_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel7__BSSGP_downlinkEGPRS2_xer_ = { {"downlinkEGPRS2>\n", "downlinkEGPRS2>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel7__BSSGP_downlinkEGPRS2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel7__BSSGP_downlinkEGPRS2_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel7_BSSGP.downlinkEGPRS2", &BITSTRING_ber_, &AccessCapAdditionsRel7__BSSGP_downlinkEGPRS2_raw_, NULL, &AccessCapAdditionsRel7__BSSGP_downlinkEGPRS2_xer_, &BITSTRING_json_, &AccessCapAdditionsRel7__BSSGP_downlinkEGPRS2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel7__BSSGP_downlinkEGPRS2_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel7__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel7__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsRel7__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel7_BSSGP", NULL, &AccessCapAdditionsRel7__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t DownlinkDualCarrier__BSSGP_multislotCapReductionforDownLinkDualCarrier_raw_ = {3,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DownlinkDualCarrier__BSSGP_multislotCapReductionforDownLinkDualCarrier_xer_ = { {"multislotCapReductionforDownLinkDualCarrier>\n", "multislotCapReductionforDownLinkDualCarrier>\n"}, {45, 45}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DownlinkDualCarrier__BSSGP_multislotCapReductionforDownLinkDualCarrier_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DownlinkDualCarrier__BSSGP_multislotCapReductionforDownLinkDualCarrier_descr_ = { "@BSSGP_Types.DownlinkDualCarrier_BSSGP.multislotCapReductionforDownLinkDualCarrier", &BITSTRING_ber_, &DownlinkDualCarrier__BSSGP_multislotCapReductionforDownLinkDualCarrier_raw_, NULL, &DownlinkDualCarrier__BSSGP_multislotCapReductionforDownLinkDualCarrier_xer_, &BITSTRING_json_, &DownlinkDualCarrier__BSSGP_multislotCapReductionforDownLinkDualCarrier_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DownlinkDualCarrier__BSSGP_multislotCapReductionforDownLinkDualCarrier_default_coding("RAW");
const TTCN_RAWdescriptor_t DownlinkDualCarrier__BSSGP_downlinkDualCarrierforDTMCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DownlinkDualCarrier__BSSGP_downlinkDualCarrierforDTMCapability_xer_ = { {"downlinkDualCarrierforDTMCapability>\n", "downlinkDualCarrierforDTMCapability>\n"}, {37, 37}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DownlinkDualCarrier__BSSGP_downlinkDualCarrierforDTMCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DownlinkDualCarrier__BSSGP_downlinkDualCarrierforDTMCapability_descr_ = { "@BSSGP_Types.DownlinkDualCarrier_BSSGP.downlinkDualCarrierforDTMCapability", &BITSTRING_ber_, &DownlinkDualCarrier__BSSGP_downlinkDualCarrierforDTMCapability_raw_, NULL, &DownlinkDualCarrier__BSSGP_downlinkDualCarrierforDTMCapability_xer_, &BITSTRING_json_, &DownlinkDualCarrier__BSSGP_downlinkDualCarrierforDTMCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DownlinkDualCarrier__BSSGP_downlinkDualCarrierforDTMCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t DownlinkDualCarrier__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for DownlinkDualCarrier__BSSGP
const TTCN_Typedescriptor_t DownlinkDualCarrier__BSSGP_descr_ = { "@BSSGP_Types.DownlinkDualCarrier_BSSGP", NULL, &DownlinkDualCarrier__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DownlinkDualCarrier__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel7__BSSGP_downlinkDualCarrier_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel7__BSSGP_downlinkDualCarrier
const TTCN_Typedescriptor_t AccessCapAdditionsRel7__BSSGP_downlinkDualCarrier_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel7_BSSGP.downlinkDualCarrier", NULL, &AccessCapAdditionsRel7__BSSGP_downlinkDualCarrier_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel7__BSSGP_downlinkDualCarrier_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsRel7__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel6__BSSGP_accessCapAdditionsRel7_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel6__BSSGP_accessCapAdditionsRel7
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel6__BSSGP_accessCapAdditionsRel7_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel6_BSSGP.accessCapAdditionsRel7", NULL, &AccessCapAdditionsAfterRel6__BSSGP_accessCapAdditionsRel7_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel6__BSSGP_accessCapAdditionsRel7_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel6__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel6__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel6__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel6_BSSGP", NULL, &AccessCapAdditionsAfterRel6__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsRel8__BSSGP_eUTRAFDDsupport_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel8__BSSGP_eUTRAFDDsupport_xer_ = { {"eUTRAFDDsupport>\n", "eUTRAFDDsupport>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel8__BSSGP_eUTRAFDDsupport_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel8__BSSGP_eUTRAFDDsupport_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel8_BSSGP.eUTRAFDDsupport", &BITSTRING_ber_, &AccessCapAdditionsRel8__BSSGP_eUTRAFDDsupport_raw_, NULL, &AccessCapAdditionsRel8__BSSGP_eUTRAFDDsupport_xer_, &BITSTRING_json_, &AccessCapAdditionsRel8__BSSGP_eUTRAFDDsupport_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel8__BSSGP_eUTRAFDDsupport_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel8__BSSGP_eUTRATDDsupport_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel8__BSSGP_eUTRATDDsupport_xer_ = { {"eUTRATDDsupport>\n", "eUTRATDDsupport>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel8__BSSGP_eUTRATDDsupport_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel8__BSSGP_eUTRATDDsupport_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel8_BSSGP.eUTRATDDsupport", &BITSTRING_ber_, &AccessCapAdditionsRel8__BSSGP_eUTRATDDsupport_raw_, NULL, &AccessCapAdditionsRel8__BSSGP_eUTRATDDsupport_xer_, &BITSTRING_json_, &AccessCapAdditionsRel8__BSSGP_eUTRATDDsupport_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel8__BSSGP_eUTRATDDsupport_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel8__BSSGP_gERANToEUTRASupportInGERANPacketTransferMode_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel8__BSSGP_gERANToEUTRASupportInGERANPacketTransferMode_xer_ = { {"gERANToEUTRASupportInGERANPacketTransferMode>\n", "gERANToEUTRASupportInGERANPacketTransferMode>\n"}, {46, 46}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel8__BSSGP_gERANToEUTRASupportInGERANPacketTransferMode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel8__BSSGP_gERANToEUTRASupportInGERANPacketTransferMode_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel8_BSSGP.gERANToEUTRASupportInGERANPacketTransferMode", &BITSTRING_ber_, &AccessCapAdditionsRel8__BSSGP_gERANToEUTRASupportInGERANPacketTransferMode_raw_, NULL, &AccessCapAdditionsRel8__BSSGP_gERANToEUTRASupportInGERANPacketTransferMode_xer_, &BITSTRING_json_, &AccessCapAdditionsRel8__BSSGP_gERANToEUTRASupportInGERANPacketTransferMode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel8__BSSGP_gERANToEUTRASupportInGERANPacketTransferMode_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel8__BSSGP_priorityBasedReselectionSupport_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel8__BSSGP_priorityBasedReselectionSupport_xer_ = { {"priorityBasedReselectionSupport>\n", "priorityBasedReselectionSupport>\n"}, {33, 33}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel8__BSSGP_priorityBasedReselectionSupport_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel8__BSSGP_priorityBasedReselectionSupport_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel8_BSSGP.priorityBasedReselectionSupport", &BITSTRING_ber_, &AccessCapAdditionsRel8__BSSGP_priorityBasedReselectionSupport_raw_, NULL, &AccessCapAdditionsRel8__BSSGP_priorityBasedReselectionSupport_xer_, &BITSTRING_json_, &AccessCapAdditionsRel8__BSSGP_priorityBasedReselectionSupport_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel8__BSSGP_priorityBasedReselectionSupport_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel8__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel8__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsRel8__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel8_BSSGP", NULL, &AccessCapAdditionsRel8__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel8__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel7__BSSGP_accessCapAdditionsRel8_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel7__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel7__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel7__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel7_BSSGP", NULL, &AccessCapAdditionsAfterRel7__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_presenceBitalternativeEFTAMultislotClass_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EnhancedFlexTimeslotAssignment__BSSGP_presenceBitalternativeEFTAMultislotClass_xer_ = { {"presenceBitalternativeEFTAMultislotClass>\n", "presenceBitalternativeEFTAMultislotClass>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_presenceBitalternativeEFTAMultislotClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_presenceBitalternativeEFTAMultislotClass_descr_ = { "@BSSGP_Types.EnhancedFlexTimeslotAssignment_BSSGP.presenceBitalternativeEFTAMultislotClass", &BITSTRING_ber_, &EnhancedFlexTimeslotAssignment__BSSGP_presenceBitalternativeEFTAMultislotClass_raw_, NULL, &EnhancedFlexTimeslotAssignment__BSSGP_presenceBitalternativeEFTAMultislotClass_xer_, &BITSTRING_json_, &EnhancedFlexTimeslotAssignment__BSSGP_presenceBitalternativeEFTAMultislotClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EnhancedFlexTimeslotAssignment__BSSGP_presenceBitalternativeEFTAMultislotClass_default_coding("RAW");
const TTCN_RAWdescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_alternativeEFTAMultislotClass_raw_ = {4,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EnhancedFlexTimeslotAssignment__BSSGP_alternativeEFTAMultislotClass_xer_ = { {"alternativeEFTAMultislotClass>\n", "alternativeEFTAMultislotClass>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_alternativeEFTAMultislotClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_alternativeEFTAMultislotClass_descr_ = { "@BSSGP_Types.EnhancedFlexTimeslotAssignment_BSSGP.alternativeEFTAMultislotClass", &BITSTRING_ber_, &EnhancedFlexTimeslotAssignment__BSSGP_alternativeEFTAMultislotClass_raw_, NULL, &EnhancedFlexTimeslotAssignment__BSSGP_alternativeEFTAMultislotClass_xer_, &BITSTRING_json_, &EnhancedFlexTimeslotAssignment__BSSGP_alternativeEFTAMultislotClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EnhancedFlexTimeslotAssignment__BSSGP_alternativeEFTAMultislotClass_default_coding("RAW");
const TTCN_RAWdescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_eFTAMultislotCapabilityReductionforDownlinkDualCarrier_raw_ = {3,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EnhancedFlexTimeslotAssignment__BSSGP_eFTAMultislotCapabilityReductionforDownlinkDualCarrier_xer_ = { {"eFTAMultislotCapabilityReductionforDownlinkDualCarrier>\n", "eFTAMultislotCapabilityReductionforDownlinkDualCarrier>\n"}, {56, 56}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_eFTAMultislotCapabilityReductionforDownlinkDualCarrier_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_eFTAMultislotCapabilityReductionforDownlinkDualCarrier_descr_ = { "@BSSGP_Types.EnhancedFlexTimeslotAssignment_BSSGP.eFTAMultislotCapabilityReductionforDownlinkDualCarrier", &BITSTRING_ber_, &EnhancedFlexTimeslotAssignment__BSSGP_eFTAMultislotCapabilityReductionforDownlinkDualCarrier_raw_, NULL, &EnhancedFlexTimeslotAssignment__BSSGP_eFTAMultislotCapabilityReductionforDownlinkDualCarrier_xer_, &BITSTRING_json_, &EnhancedFlexTimeslotAssignment__BSSGP_eFTAMultislotCapabilityReductionforDownlinkDualCarrier_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EnhancedFlexTimeslotAssignment__BSSGP_eFTAMultislotCapabilityReductionforDownlinkDualCarrier_default_coding("RAW");
const TTCN_RAWdescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for EnhancedFlexTimeslotAssignment__BSSGP
const TTCN_Typedescriptor_t EnhancedFlexTimeslotAssignment__BSSGP_descr_ = { "@BSSGP_Types.EnhancedFlexTimeslotAssignment_BSSGP", NULL, &EnhancedFlexTimeslotAssignment__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EnhancedFlexTimeslotAssignment__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel9__BSSGP_enhancedFlexTimeslotAssignment_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel9__BSSGP_enhancedFlexTimeslotAssignment
const TTCN_Typedescriptor_t AccessCapAdditionsRel9__BSSGP_enhancedFlexTimeslotAssignment_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel9_BSSGP.enhancedFlexTimeslotAssignment", NULL, &AccessCapAdditionsRel9__BSSGP_enhancedFlexTimeslotAssignment_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel9__BSSGP_enhancedFlexTimeslotAssignment_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel9__BSSGP_indicationofUpperLayerPDUStartCapabilityforRLCUM_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel9__BSSGP_indicationofUpperLayerPDUStartCapabilityforRLCUM_xer_ = { {"indicationofUpperLayerPDUStartCapabilityforRLCUM>\n", "indicationofUpperLayerPDUStartCapabilityforRLCUM>\n"}, {50, 50}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel9__BSSGP_indicationofUpperLayerPDUStartCapabilityforRLCUM_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel9__BSSGP_indicationofUpperLayerPDUStartCapabilityforRLCUM_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel9_BSSGP.indicationofUpperLayerPDUStartCapabilityforRLCUM", &BITSTRING_ber_, &AccessCapAdditionsRel9__BSSGP_indicationofUpperLayerPDUStartCapabilityforRLCUM_raw_, NULL, &AccessCapAdditionsRel9__BSSGP_indicationofUpperLayerPDUStartCapabilityforRLCUM_xer_, &BITSTRING_json_, &AccessCapAdditionsRel9__BSSGP_indicationofUpperLayerPDUStartCapabilityforRLCUM_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel9__BSSGP_indicationofUpperLayerPDUStartCapabilityforRLCUM_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel9__BSSGP_eMSTCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel9__BSSGP_eMSTCapability_xer_ = { {"eMSTCapability>\n", "eMSTCapability>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel9__BSSGP_eMSTCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel9__BSSGP_eMSTCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel9_BSSGP.eMSTCapability", &BITSTRING_ber_, &AccessCapAdditionsRel9__BSSGP_eMSTCapability_raw_, NULL, &AccessCapAdditionsRel9__BSSGP_eMSTCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel9__BSSGP_eMSTCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel9__BSSGP_eMSTCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel9__BSSGP_mTTICapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel9__BSSGP_mTTICapability_xer_ = { {"mTTICapability>\n", "mTTICapability>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel9__BSSGP_mTTICapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel9__BSSGP_mTTICapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel9_BSSGP.mTTICapability", &BITSTRING_ber_, &AccessCapAdditionsRel9__BSSGP_mTTICapability_raw_, NULL, &AccessCapAdditionsRel9__BSSGP_mTTICapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel9__BSSGP_mTTICapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel9__BSSGP_mTTICapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel9__BSSGP_uTRACSGCellsReporting_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel9__BSSGP_uTRACSGCellsReporting_xer_ = { {"uTRACSGCellsReporting>\n", "uTRACSGCellsReporting>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel9__BSSGP_uTRACSGCellsReporting_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel9__BSSGP_uTRACSGCellsReporting_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel9_BSSGP.uTRACSGCellsReporting", &BITSTRING_ber_, &AccessCapAdditionsRel9__BSSGP_uTRACSGCellsReporting_raw_, NULL, &AccessCapAdditionsRel9__BSSGP_uTRACSGCellsReporting_xer_, &BITSTRING_json_, &AccessCapAdditionsRel9__BSSGP_uTRACSGCellsReporting_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel9__BSSGP_uTRACSGCellsReporting_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel9__BSSGP_eUTRACSGCellsReporting_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel9__BSSGP_eUTRACSGCellsReporting_xer_ = { {"eUTRACSGCellsReporting>\n", "eUTRACSGCellsReporting>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel9__BSSGP_eUTRACSGCellsReporting_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel9__BSSGP_eUTRACSGCellsReporting_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel9_BSSGP.eUTRACSGCellsReporting", &BITSTRING_ber_, &AccessCapAdditionsRel9__BSSGP_eUTRACSGCellsReporting_raw_, NULL, &AccessCapAdditionsRel9__BSSGP_eUTRACSGCellsReporting_xer_, &BITSTRING_json_, &AccessCapAdditionsRel9__BSSGP_eUTRACSGCellsReporting_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel9__BSSGP_eUTRACSGCellsReporting_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel9__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel9__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsRel9__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel9_BSSGP", NULL, &AccessCapAdditionsRel9__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel9__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel8__BSSGP_accessCapAdditionsRel9_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel8__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel8__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel8__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel8_BSSGP", NULL, &AccessCapAdditionsAfterRel8__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsRel10__BSSGP_dTRCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel10__BSSGP_dTRCapability_xer_ = { {"dTRCapability>\n", "dTRCapability>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel10__BSSGP_dTRCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel10__BSSGP_dTRCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel10_BSSGP.dTRCapability", &BITSTRING_ber_, &AccessCapAdditionsRel10__BSSGP_dTRCapability_raw_, NULL, &AccessCapAdditionsRel10__BSSGP_dTRCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel10__BSSGP_dTRCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel10__BSSGP_dTRCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel10__BSSGP_eMSRCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel10__BSSGP_eMSRCapability_xer_ = { {"eMSRCapability>\n", "eMSRCapability>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel10__BSSGP_eMSRCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel10__BSSGP_eMSRCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel10_BSSGP.eMSRCapability", &BITSTRING_ber_, &AccessCapAdditionsRel10__BSSGP_eMSRCapability_raw_, NULL, &AccessCapAdditionsRel10__BSSGP_eMSRCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel10__BSSGP_eMSRCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel10__BSSGP_eMSRCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel10__BSSGP_fastDownlinkFrequencySwitchingCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel10__BSSGP_fastDownlinkFrequencySwitchingCapability_xer_ = { {"fastDownlinkFrequencySwitchingCapability>\n", "fastDownlinkFrequencySwitchingCapability>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel10__BSSGP_fastDownlinkFrequencySwitchingCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel10__BSSGP_fastDownlinkFrequencySwitchingCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel10_BSSGP.fastDownlinkFrequencySwitchingCapability", &BITSTRING_ber_, &AccessCapAdditionsRel10__BSSGP_fastDownlinkFrequencySwitchingCapability_raw_, NULL, &AccessCapAdditionsRel10__BSSGP_fastDownlinkFrequencySwitchingCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel10__BSSGP_fastDownlinkFrequencySwitchingCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel10__BSSGP_fastDownlinkFrequencySwitchingCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel10__BSSGP_tIGHTER__Capability_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel10__BSSGP_tIGHTER__Capability_xer_ = { {"tIGHTER_Capability>\n", "tIGHTER_Capability>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel10__BSSGP_tIGHTER__Capability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel10__BSSGP_tIGHTER__Capability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel10_BSSGP.tIGHTER_Capability", &BITSTRING_ber_, &AccessCapAdditionsRel10__BSSGP_tIGHTER__Capability_raw_, NULL, &AccessCapAdditionsRel10__BSSGP_tIGHTER__Capability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel10__BSSGP_tIGHTER__Capability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel10__BSSGP_tIGHTER__Capability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel10__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel10__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsRel10__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel10_BSSGP", NULL, &AccessCapAdditionsRel10__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel10__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel9__BSSGP_accessCapAdditionsRel10_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel9__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel9__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel9__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel9_BSSGP", NULL, &AccessCapAdditionsAfterRel9__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsRel11__BSSGP_fANRCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel11__BSSGP_fANRCapability_xer_ = { {"fANRCapability>\n", "fANRCapability>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel11__BSSGP_fANRCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel11__BSSGP_fANRCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel11_BSSGP.fANRCapability", &BITSTRING_ber_, &AccessCapAdditionsRel11__BSSGP_fANRCapability_raw_, NULL, &AccessCapAdditionsRel11__BSSGP_fANRCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel11__BSSGP_fANRCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel11__BSSGP_fANRCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel11__BSSGP_iPACapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel11__BSSGP_iPACapability_xer_ = { {"iPACapability>\n", "iPACapability>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel11__BSSGP_iPACapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel11__BSSGP_iPACapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel11_BSSGP.iPACapability", &BITSTRING_ber_, &AccessCapAdditionsRel11__BSSGP_iPACapability_raw_, NULL, &AccessCapAdditionsRel11__BSSGP_iPACapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel11__BSSGP_iPACapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel11__BSSGP_iPACapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel11__BSSGP_gERANNetworkSharingSupport_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel11__BSSGP_gERANNetworkSharingSupport_xer_ = { {"gERANNetworkSharingSupport>\n", "gERANNetworkSharingSupport>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel11__BSSGP_gERANNetworkSharingSupport_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel11__BSSGP_gERANNetworkSharingSupport_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel11_BSSGP.gERANNetworkSharingSupport", &BITSTRING_ber_, &AccessCapAdditionsRel11__BSSGP_gERANNetworkSharingSupport_raw_, NULL, &AccessCapAdditionsRel11__BSSGP_gERANNetworkSharingSupport_xer_, &BITSTRING_json_, &AccessCapAdditionsRel11__BSSGP_gERANNetworkSharingSupport_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel11__BSSGP_gERANNetworkSharingSupport_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel11__BSSGP_eUTRAWidebandRSRQMeasurementsSupport_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel11__BSSGP_eUTRAWidebandRSRQMeasurementsSupport_xer_ = { {"eUTRAWidebandRSRQMeasurementsSupport>\n", "eUTRAWidebandRSRQMeasurementsSupport>\n"}, {38, 38}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel11__BSSGP_eUTRAWidebandRSRQMeasurementsSupport_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel11__BSSGP_eUTRAWidebandRSRQMeasurementsSupport_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel11_BSSGP.eUTRAWidebandRSRQMeasurementsSupport", &BITSTRING_ber_, &AccessCapAdditionsRel11__BSSGP_eUTRAWidebandRSRQMeasurementsSupport_raw_, NULL, &AccessCapAdditionsRel11__BSSGP_eUTRAWidebandRSRQMeasurementsSupport_xer_, &BITSTRING_json_, &AccessCapAdditionsRel11__BSSGP_eUTRAWidebandRSRQMeasurementsSupport_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel11__BSSGP_eUTRAWidebandRSRQMeasurementsSupport_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel11__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel11__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsRel11__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel11_BSSGP", NULL, &AccessCapAdditionsRel11__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel11__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel10__BSSGP_accessCapAdditionsRel11_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel10__BSSGP_accessCapAdditionsRel11
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel10__BSSGP_accessCapAdditionsRel11_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel10_BSSGP.accessCapAdditionsRel11", NULL, &AccessCapAdditionsAfterRel10__BSSGP_accessCapAdditionsRel11_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel10__BSSGP_accessCapAdditionsRel11_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel10__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel10__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel10__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel10_BSSGP", NULL, &AccessCapAdditionsAfterRel10__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsRel12__BSSGP_uTRAMultipleFrequencyBandIndicatorsSupport_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel12__BSSGP_uTRAMultipleFrequencyBandIndicatorsSupport_xer_ = { {"uTRAMultipleFrequencyBandIndicatorsSupport>\n", "uTRAMultipleFrequencyBandIndicatorsSupport>\n"}, {44, 44}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel12__BSSGP_uTRAMultipleFrequencyBandIndicatorsSupport_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel12__BSSGP_uTRAMultipleFrequencyBandIndicatorsSupport_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel12_BSSGP.uTRAMultipleFrequencyBandIndicatorsSupport", &BITSTRING_ber_, &AccessCapAdditionsRel12__BSSGP_uTRAMultipleFrequencyBandIndicatorsSupport_raw_, NULL, &AccessCapAdditionsRel12__BSSGP_uTRAMultipleFrequencyBandIndicatorsSupport_xer_, &BITSTRING_json_, &AccessCapAdditionsRel12__BSSGP_uTRAMultipleFrequencyBandIndicatorsSupport_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel12__BSSGP_uTRAMultipleFrequencyBandIndicatorsSupport_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel12__BSSGP_eUTRAMultipleFrequencyBandIndicatorsSupport_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel12__BSSGP_eUTRAMultipleFrequencyBandIndicatorsSupport_xer_ = { {"eUTRAMultipleFrequencyBandIndicatorsSupport>\n", "eUTRAMultipleFrequencyBandIndicatorsSupport>\n"}, {45, 45}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel12__BSSGP_eUTRAMultipleFrequencyBandIndicatorsSupport_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel12__BSSGP_eUTRAMultipleFrequencyBandIndicatorsSupport_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel12_BSSGP.eUTRAMultipleFrequencyBandIndicatorsSupport", &BITSTRING_ber_, &AccessCapAdditionsRel12__BSSGP_eUTRAMultipleFrequencyBandIndicatorsSupport_raw_, NULL, &AccessCapAdditionsRel12__BSSGP_eUTRAMultipleFrequencyBandIndicatorsSupport_xer_, &BITSTRING_json_, &AccessCapAdditionsRel12__BSSGP_eUTRAMultipleFrequencyBandIndicatorsSupport_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel12__BSSGP_eUTRAMultipleFrequencyBandIndicatorsSupport_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel12__BSSGP_presenceBitDLMCCapability_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel12__BSSGP_presenceBitDLMCCapability_xer_ = { {"presenceBitDLMCCapability>\n", "presenceBitDLMCCapability>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel12__BSSGP_presenceBitDLMCCapability_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel12__BSSGP_presenceBitDLMCCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel12_BSSGP.presenceBitDLMCCapability", &BITSTRING_ber_, &AccessCapAdditionsRel12__BSSGP_presenceBitDLMCCapability_raw_, NULL, &AccessCapAdditionsRel12__BSSGP_presenceBitDLMCCapability_xer_, &BITSTRING_json_, &AccessCapAdditionsRel12__BSSGP_presenceBitDLMCCapability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel12__BSSGP_presenceBitDLMCCapability_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel12__BSSGP_extendedTSCSetCapabilitySupport_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsRel12__BSSGP_extendedTSCSetCapabilitySupport_xer_ = { {"extendedTSCSetCapabilitySupport>\n", "extendedTSCSetCapabilitySupport>\n"}, {33, 33}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapAdditionsRel12__BSSGP_extendedTSCSetCapabilitySupport_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapAdditionsRel12__BSSGP_extendedTSCSetCapabilitySupport_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel12_BSSGP.extendedTSCSetCapabilitySupport", &BITSTRING_ber_, &AccessCapAdditionsRel12__BSSGP_extendedTSCSetCapabilitySupport_raw_, NULL, &AccessCapAdditionsRel12__BSSGP_extendedTSCSetCapabilitySupport_xer_, &BITSTRING_json_, &AccessCapAdditionsRel12__BSSGP_extendedTSCSetCapabilitySupport_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel12__BSSGP_extendedTSCSetCapabilitySupport_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel12__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel12__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsRel12__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel12_BSSGP", NULL, &AccessCapAdditionsRel12__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t DLMCCapability__BSSGP_presenceDLMC_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DLMCCapability__BSSGP_presenceDLMC_xer_ = { {"presenceDLMC>\n", "presenceDLMC>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DLMCCapability__BSSGP_presenceDLMC_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DLMCCapability__BSSGP_presenceDLMC_descr_ = { "@BSSGP_Types.DLMCCapability_BSSGP.presenceDLMC", &BITSTRING_ber_, &DLMCCapability__BSSGP_presenceDLMC_raw_, NULL, &DLMCCapability__BSSGP_presenceDLMC_xer_, &BITSTRING_json_, &DLMCCapability__BSSGP_presenceDLMC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DLMCCapability__BSSGP_presenceDLMC_default_coding("RAW");
const TTCN_RAWdescriptor_t DLMCCapability__BSSGP_dLMCMaxBandwidth_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DLMCCapability__BSSGP_dLMCMaxBandwidth_xer_ = { {"dLMCMaxBandwidth>\n", "dLMCMaxBandwidth>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DLMCCapability__BSSGP_dLMCMaxBandwidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DLMCCapability__BSSGP_dLMCMaxBandwidth_descr_ = { "@BSSGP_Types.DLMCCapability_BSSGP.dLMCMaxBandwidth", &BITSTRING_ber_, &DLMCCapability__BSSGP_dLMCMaxBandwidth_raw_, NULL, &DLMCCapability__BSSGP_dLMCMaxBandwidth_xer_, &BITSTRING_json_, &DLMCCapability__BSSGP_dLMCMaxBandwidth_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DLMCCapability__BSSGP_dLMCMaxBandwidth_default_coding("RAW");
const TTCN_RAWdescriptor_t DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkTimeslots_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkTimeslots_xer_ = { {"dLMCMaxNumOfDownlinkTimeslots>\n", "dLMCMaxNumOfDownlinkTimeslots>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkTimeslots_descr_ = { "@BSSGP_Types.DLMCCapability_BSSGP.dLMCMaxNumOfDownlinkTimeslots", &BITSTRING_ber_, &DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkTimeslots_raw_, NULL, &DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkTimeslots_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkTimeslots_default_coding("RAW");
const TTCN_RAWdescriptor_t DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkCarriers_raw_ = {3,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkCarriers_xer_ = { {"dLMCMaxNumOfDownlinkCarriers>\n", "dLMCMaxNumOfDownlinkCarriers>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkCarriers_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkCarriers_descr_ = { "@BSSGP_Types.DLMCCapability_BSSGP.dLMCMaxNumOfDownlinkCarriers", &BITSTRING_ber_, &DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkCarriers_raw_, NULL, &DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkCarriers_xer_, &BITSTRING_json_, &DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkCarriers_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DLMCCapability__BSSGP_dLMCMaxNumOfDownlinkCarriers_default_coding("RAW");
const TTCN_RAWdescriptor_t DLMCCapability__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for DLMCCapability__BSSGP
const TTCN_Typedescriptor_t DLMCCapability__BSSGP_descr_ = { "@BSSGP_Types.DLMCCapability_BSSGP", NULL, &DLMCCapability__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t DLMCBandReception__BSSGP_dLMCNonContiguousIntraBandReception_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DLMCBandReception__BSSGP_dLMCNonContiguousIntraBandReception_xer_ = { {"dLMCNonContiguousIntraBandReception>\n", "dLMCNonContiguousIntraBandReception>\n"}, {37, 37}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DLMCBandReception__BSSGP_dLMCNonContiguousIntraBandReception_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DLMCBandReception__BSSGP_dLMCNonContiguousIntraBandReception_descr_ = { "@BSSGP_Types.DLMCBandReception_BSSGP.dLMCNonContiguousIntraBandReception", &BITSTRING_ber_, &DLMCBandReception__BSSGP_dLMCNonContiguousIntraBandReception_raw_, NULL, &DLMCBandReception__BSSGP_dLMCNonContiguousIntraBandReception_xer_, &BITSTRING_json_, &DLMCBandReception__BSSGP_dLMCNonContiguousIntraBandReception_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DLMCBandReception__BSSGP_dLMCNonContiguousIntraBandReception_default_coding("RAW");
const TTCN_RAWdescriptor_t DLMCBandReception__BSSGP_dLMCInterBandReception_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DLMCBandReception__BSSGP_dLMCInterBandReception_xer_ = { {"dLMCInterBandReception>\n", "dLMCInterBandReception>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DLMCBandReception__BSSGP_dLMCInterBandReception_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DLMCBandReception__BSSGP_dLMCInterBandReception_descr_ = { "@BSSGP_Types.DLMCBandReception_BSSGP.dLMCInterBandReception", &BITSTRING_ber_, &DLMCBandReception__BSSGP_dLMCInterBandReception_raw_, NULL, &DLMCBandReception__BSSGP_dLMCInterBandReception_xer_, &BITSTRING_json_, &DLMCBandReception__BSSGP_dLMCInterBandReception_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DLMCBandReception__BSSGP_dLMCInterBandReception_default_coding("RAW");
const TTCN_RAWdescriptor_t DLMCBandReception__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for DLMCBandReception__BSSGP
const TTCN_Typedescriptor_t DLMCBandReception__BSSGP_descr_ = { "@BSSGP_Types.DLMCBandReception_BSSGP", NULL, &DLMCBandReception__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DLMCBandReception__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t DLMCCapability__BSSGP_dLMCBandReception_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for DLMCCapability__BSSGP_dLMCBandReception
const TTCN_Typedescriptor_t DLMCCapability__BSSGP_dLMCBandReception_descr_ = { "@BSSGP_Types.DLMCCapability_BSSGP.dLMCBandReception", NULL, &DLMCCapability__BSSGP_dLMCBandReception_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DLMCCapability__BSSGP_dLMCBandReception_default_coding("RAW");
UNIVERSAL_CHARSTRING DLMCCapability__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsRel12__BSSGP_dLMCCapability_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsRel12__BSSGP_dLMCCapability
const TTCN_Typedescriptor_t AccessCapAdditionsRel12__BSSGP_dLMCCapability_descr_ = { "@BSSGP_Types.AccessCapAdditionsRel12_BSSGP.dLMCCapability", NULL, &AccessCapAdditionsRel12__BSSGP_dLMCCapability_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsRel12__BSSGP_dLMCCapability_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsRel12__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel11__BSSGP_accessCapAdditionsRel12_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel11__BSSGP_accessCapAdditionsRel12
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel11__BSSGP_accessCapAdditionsRel12_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel11_BSSGP.accessCapAdditionsRel12", NULL, &AccessCapAdditionsAfterRel11__BSSGP_accessCapAdditionsRel12_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel11__BSSGP_accessCapAdditionsRel12_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel11__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel11__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel11__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel11_BSSGP", NULL, &AccessCapAdditionsAfterRel11__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       AccessCapLateAdditionsRel11__BSSGP_extendedEARFCNValueRange_xer_ = { {"extendedEARFCNValueRange>\n", "extendedEARFCNValueRange>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AccessCapLateAdditionsRel11__BSSGP_extendedEARFCNValueRange_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AccessCapLateAdditionsRel11__BSSGP_extendedEARFCNValueRange_descr_ = { "@BSSGP_Types.AccessCapLateAdditionsRel11_BSSGP.extendedEARFCNValueRange", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &AccessCapLateAdditionsRel11__BSSGP_extendedEARFCNValueRange_xer_, &BITSTRING_json_, &AccessCapLateAdditionsRel11__BSSGP_extendedEARFCNValueRange_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapLateAdditionsRel11__BSSGP_extendedEARFCNValueRange_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapLateAdditionsRel11__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapLateAdditionsRel11__BSSGP
const TTCN_Typedescriptor_t AccessCapLateAdditionsRel11__BSSGP_descr_ = { "@BSSGP_Types.AccessCapLateAdditionsRel11_BSSGP", NULL, &AccessCapLateAdditionsRel11__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapLateAdditionsRel11__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsRel11_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsRel11
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsRel11_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel12_BSSGP.accessCapLateAdditionsRel11", NULL, &AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsRel11_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsRel11_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel12__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel12__BSSGP
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel12__BSSGP_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel12_BSSGP", NULL, &AccessCapAdditionsAfterRel12__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_raw_ = {0,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_xer_ = { {"accessCapLateAdditionsAfterRel11>\n", "accessCapLateAdditionsAfterRel11>\n"}, {34, 34}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_oer_ext_arr_[0] = {};
const int AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_oer_p_[0] = {};
const TTCN_OERdescriptor_t AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_oer_ext_arr_, 0, AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_oer_p_};
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel12_BSSGP.accessCapLateAdditionsAfterRel11", &OCTETSTRING_ber_, &AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_raw_, &OCTETSTRING_text_, &AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_xer_, &OCTETSTRING_json_, &AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel12__BSSGP_accessCapLateAdditionsAfterRel11_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel12__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel11__BSSGP_accessCapAdditionsAfterRel12_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel11__BSSGP_accessCapAdditionsAfterRel12
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel11__BSSGP_accessCapAdditionsAfterRel12_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel11_BSSGP.accessCapAdditionsAfterRel12", NULL, &AccessCapAdditionsAfterRel11__BSSGP_accessCapAdditionsAfterRel12_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel11__BSSGP_accessCapAdditionsAfterRel12_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel11__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel10__BSSGP_accessCapAdditionsAfterRel11_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel10__BSSGP_accessCapAdditionsAfterRel11
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel10__BSSGP_accessCapAdditionsAfterRel11_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel10_BSSGP.accessCapAdditionsAfterRel11", NULL, &AccessCapAdditionsAfterRel10__BSSGP_accessCapAdditionsAfterRel11_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel10__BSSGP_accessCapAdditionsAfterRel11_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel10__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel9__BSSGP_accessCapAdditionsAfterRel10_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel9__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel8__BSSGP_accessCapAdditionsAfterRel9_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel8__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel7__BSSGP_accessCapAdditionsAfterRel8_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel7__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel6__BSSGP_accessCapAdditionsAfterRel7_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel6__BSSGP_accessCapAdditionsAfterRel7
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel6__BSSGP_accessCapAdditionsAfterRel7_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel6_BSSGP.accessCapAdditionsAfterRel7", NULL, &AccessCapAdditionsAfterRel6__BSSGP_accessCapAdditionsAfterRel7_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel6__BSSGP_accessCapAdditionsAfterRel7_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel6__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel5__BSSGP_accessCapAdditionsAfterRel6_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel5__BSSGP_accessCapAdditionsAfterRel6
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel5__BSSGP_accessCapAdditionsAfterRel6_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel5_BSSGP.accessCapAdditionsAfterRel6", NULL, &AccessCapAdditionsAfterRel5__BSSGP_accessCapAdditionsAfterRel6_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel5__BSSGP_accessCapAdditionsAfterRel6_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel5__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel4__BSSGP_accessCapAdditionsAfterRel5_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel4__BSSGP_accessCapAdditionsAfterRel5
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel4__BSSGP_accessCapAdditionsAfterRel5_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel4_BSSGP.accessCapAdditionsAfterRel5", NULL, &AccessCapAdditionsAfterRel4__BSSGP_accessCapAdditionsAfterRel5_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel4__BSSGP_accessCapAdditionsAfterRel5_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel4__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel99__BSSGP_accessCapAdditionsAfterRel4_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel99__BSSGP_accessCapAdditionsAfterRel4
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel99__BSSGP_accessCapAdditionsAfterRel4_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel99_BSSGP.accessCapAdditionsAfterRel4", NULL, &AccessCapAdditionsAfterRel99__BSSGP_accessCapAdditionsAfterRel4_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel99__BSSGP_accessCapAdditionsAfterRel4_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel99__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapAdditionsAfterRel97__BSSGP_accessCapAdditionsAfterRel99_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapAdditionsAfterRel97__BSSGP_accessCapAdditionsAfterRel99
const TTCN_Typedescriptor_t AccessCapAdditionsAfterRel97__BSSGP_accessCapAdditionsAfterRel99_descr_ = { "@BSSGP_Types.AccessCapAdditionsAfterRel97_BSSGP.accessCapAdditionsAfterRel99", NULL, &AccessCapAdditionsAfterRel97__BSSGP_accessCapAdditionsAfterRel99_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel97__BSSGP_accessCapAdditionsAfterRel99_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapAdditionsAfterRel97__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilities__BSSGP_accessCapAdditionsAfterRel97_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapabilities__BSSGP_accessCapAdditionsAfterRel97
const TTCN_Typedescriptor_t AccessCapabilities__BSSGP_accessCapAdditionsAfterRel97_descr_ = { "@BSSGP_Types.AccessCapabilities_BSSGP.accessCapAdditionsAfterRel97", NULL, &AccessCapabilities__BSSGP_accessCapAdditionsAfterRel97_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_accessCapAdditionsAfterRel97_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapabilities__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilitiesStruct__BSSGP_accessCapabilities_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapabilitiesStruct__BSSGP_accessCapabilities
const TTCN_Typedescriptor_t AccessCapabilitiesStruct__BSSGP_accessCapabilities_descr_ = { "@BSSGP_Types.AccessCapabilitiesStruct_BSSGP.accessCapabilities", NULL, &AccessCapabilitiesStruct__BSSGP_accessCapabilities_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilitiesStruct__BSSGP_accessCapabilities_default_coding("RAW");
const TTCN_RAWdescriptor_t AccessCapabilitiesStruct__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AccessCapabilitiesStruct__BSSGP
const TTCN_Typedescriptor_t AccessCapabilitiesStruct__BSSGP_descr_ = { "@BSSGP_Types.AccessCapabilitiesStruct_BSSGP", NULL, &AccessCapabilitiesStruct__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AccessCapabilitiesStruct__BSSGP_spare__bits_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AccessCapabilitiesStruct__BSSGP_spare__bits_xer_ = { {"spare_bits>\n", "spare_bits>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t AccessCapabilitiesStruct__BSSGP_spare__bits_descr_ = { "@BSSGP_Types.AccessCapabilitiesStruct_BSSGP.spare_bits", &BITSTRING_ber_, &AccessCapabilitiesStruct__BSSGP_spare__bits_raw_, NULL, &AccessCapabilitiesStruct__BSSGP_spare__bits_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AccessCapabilitiesStruct__BSSGP_spare__bits_default_coding("RAW");
UNIVERSAL_CHARSTRING AccessCapabilitiesStruct__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValuesExclude1111__BSSGP_accessCapabilities_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MSRACapabilityValuesExclude1111__BSSGP_accessCapabilities
const TTCN_Typedescriptor_t MSRACapabilityValuesExclude1111__BSSGP_accessCapabilities_descr_ = { "@BSSGP_Types.MSRACapabilityValuesExclude1111_BSSGP.accessCapabilities", NULL, &MSRACapabilityValuesExclude1111__BSSGP_accessCapabilities_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValuesExclude1111__BSSGP_accessCapabilities_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValuesExclude1111__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MSRACapabilityValuesExclude1111__BSSGP
const TTCN_Typedescriptor_t MSRACapabilityValuesExclude1111__BSSGP_descr_ = { "@BSSGP_Types.MSRACapabilityValuesExclude1111_BSSGP", NULL, &MSRACapabilityValuesExclude1111__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValuesExclude1111__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING MSRACapabilityValues__BSSGP_mSRACapabilityValuesExclude1111_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValues1111__BSSGP_accessTechnType_raw_ = {4,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MSRACapabilityValues1111__BSSGP_accessTechnType_xer_ = { {"accessTechnType>\n", "accessTechnType>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MSRACapabilityValues1111__BSSGP_accessTechnType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MSRACapabilityValues1111__BSSGP_accessTechnType_descr_ = { "@BSSGP_Types.MSRACapabilityValues1111_BSSGP.accessTechnType", &BITSTRING_ber_, &MSRACapabilityValues1111__BSSGP_accessTechnType_raw_, NULL, &MSRACapabilityValues1111__BSSGP_accessTechnType_xer_, &BITSTRING_json_, &MSRACapabilityValues1111__BSSGP_accessTechnType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValues1111__BSSGP_accessTechnType_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValues1111__BSSGP_lengthIndicator_raw_ = {7,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MSRACapabilityValues1111__BSSGP_lengthIndicator_xer_ = { {"lengthIndicator>\n", "lengthIndicator>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t MSRACapabilityValues1111__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.MSRACapabilityValues1111_BSSGP.lengthIndicator", &INTEGER_ber_, &MSRACapabilityValues1111__BSSGP_lengthIndicator_raw_, &INTEGER_text_, &MSRACapabilityValues1111__BSSGP_lengthIndicator_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValues1111__BSSGP_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValues1111__BSSGP_presenceIndicator__AdditionalAccessTechnologiesRepetition_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MSRACapabilityValues1111__BSSGP_presenceIndicator__AdditionalAccessTechnologiesRepetition_xer_ = { {"presenceIndicator_AdditionalAccessTechnologiesRepetition>\n", "presenceIndicator_AdditionalAccessTechnologiesRepetition>\n"}, {58, 58}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MSRACapabilityValues1111__BSSGP_presenceIndicator__AdditionalAccessTechnologiesRepetition_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MSRACapabilityValues1111__BSSGP_presenceIndicator__AdditionalAccessTechnologiesRepetition_descr_ = { "@BSSGP_Types.MSRACapabilityValues1111_BSSGP.presenceIndicator_AdditionalAccessTechnologiesRepetition", &BITSTRING_ber_, &MSRACapabilityValues1111__BSSGP_presenceIndicator__AdditionalAccessTechnologiesRepetition_raw_, NULL, &MSRACapabilityValues1111__BSSGP_presenceIndicator__AdditionalAccessTechnologiesRepetition_xer_, &BITSTRING_json_, &MSRACapabilityValues1111__BSSGP_presenceIndicator__AdditionalAccessTechnologiesRepetition_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValues1111__BSSGP_presenceIndicator__AdditionalAccessTechnologiesRepetition_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValues1111__BSSGP_spare__bits_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MSRACapabilityValues1111__BSSGP_spare__bits_xer_ = { {"spare_bits>\n", "spare_bits>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t MSRACapabilityValues1111__BSSGP_spare__bits_descr_ = { "@BSSGP_Types.MSRACapabilityValues1111_BSSGP.spare_bits", &BITSTRING_ber_, &MSRACapabilityValues1111__BSSGP_spare__bits_raw_, NULL, &MSRACapabilityValues1111__BSSGP_spare__bits_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValues1111__BSSGP_spare__bits_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValues1111__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MSRACapabilityValues1111__BSSGP
const TTCN_Typedescriptor_t MSRACapabilityValues1111__BSSGP_descr_ = { "@BSSGP_Types.MSRACapabilityValues1111_BSSGP", NULL, &MSRACapabilityValues1111__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AdditionalAccessTechnologiesRepetition__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_REVERSE,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AdditionalAccessTechnologiesRepetition__BSSGP
const TTCN_Typedescriptor_t AdditionalAccessTechnologiesRepetition__BSSGP_descr_ = { "@BSSGP_Types.AdditionalAccessTechnologiesRepetition_BSSGP", NULL, &AdditionalAccessTechnologiesRepetition__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, &AdditionalAccessTechnologiesRecord__BSSGP_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t AdditionalAccessTechnologies__BSSGP_accessTechnType_raw_ = {4,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AdditionalAccessTechnologies__BSSGP_accessTechnType_xer_ = { {"accessTechnType>\n", "accessTechnType>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AdditionalAccessTechnologies__BSSGP_accessTechnType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AdditionalAccessTechnologies__BSSGP_accessTechnType_descr_ = { "@BSSGP_Types.AdditionalAccessTechnologies_BSSGP.accessTechnType", &BITSTRING_ber_, &AdditionalAccessTechnologies__BSSGP_accessTechnType_raw_, NULL, &AdditionalAccessTechnologies__BSSGP_accessTechnType_xer_, &BITSTRING_json_, &AdditionalAccessTechnologies__BSSGP_accessTechnType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AdditionalAccessTechnologies__BSSGP_accessTechnType_default_coding("RAW");
const TTCN_RAWdescriptor_t AdditionalAccessTechnologies__BSSGP_gMSKPowerClass_raw_ = {3,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AdditionalAccessTechnologies__BSSGP_gMSKPowerClass_xer_ = { {"gMSKPowerClass>\n", "gMSKPowerClass>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AdditionalAccessTechnologies__BSSGP_gMSKPowerClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AdditionalAccessTechnologies__BSSGP_gMSKPowerClass_descr_ = { "@BSSGP_Types.AdditionalAccessTechnologies_BSSGP.gMSKPowerClass", &BITSTRING_ber_, &AdditionalAccessTechnologies__BSSGP_gMSKPowerClass_raw_, NULL, &AdditionalAccessTechnologies__BSSGP_gMSKPowerClass_xer_, &BITSTRING_json_, &AdditionalAccessTechnologies__BSSGP_gMSKPowerClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AdditionalAccessTechnologies__BSSGP_gMSKPowerClass_default_coding("RAW");
const TTCN_RAWdescriptor_t AdditionalAccessTechnologies__BSSGP_psk8PowerClass_raw_ = {2,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AdditionalAccessTechnologies__BSSGP_psk8PowerClass_xer_ = { {"psk8PowerClass>\n", "psk8PowerClass>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AdditionalAccessTechnologies__BSSGP_psk8PowerClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AdditionalAccessTechnologies__BSSGP_psk8PowerClass_descr_ = { "@BSSGP_Types.AdditionalAccessTechnologies_BSSGP.psk8PowerClass", &BITSTRING_ber_, &AdditionalAccessTechnologies__BSSGP_psk8PowerClass_raw_, NULL, &AdditionalAccessTechnologies__BSSGP_psk8PowerClass_xer_, &BITSTRING_json_, &AdditionalAccessTechnologies__BSSGP_psk8PowerClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AdditionalAccessTechnologies__BSSGP_psk8PowerClass_default_coding("RAW");
const TTCN_RAWdescriptor_t AdditionalAccessTechnologies__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AdditionalAccessTechnologies__BSSGP
const TTCN_Typedescriptor_t AdditionalAccessTechnologies__BSSGP_descr_ = { "@BSSGP_Types.AdditionalAccessTechnologies_BSSGP", NULL, &AdditionalAccessTechnologies__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AdditionalAccessTechnologies__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t AdditionalAccessTechnologiesRecord__BSSGP_additionalAccessTechnologies_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AdditionalAccessTechnologiesRecord__BSSGP_additionalAccessTechnologies
const TTCN_Typedescriptor_t AdditionalAccessTechnologiesRecord__BSSGP_additionalAccessTechnologies_descr_ = { "@BSSGP_Types.AdditionalAccessTechnologiesRecord_BSSGP.additionalAccessTechnologies", NULL, &AdditionalAccessTechnologiesRecord__BSSGP_additionalAccessTechnologies_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AdditionalAccessTechnologiesRecord__BSSGP_additionalAccessTechnologies_default_coding("RAW");
const TTCN_RAWdescriptor_t AdditionalAccessTechnologiesRecord__BSSGP_extensionBit_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       AdditionalAccessTechnologiesRecord__BSSGP_extensionBit_xer_ = { {"extensionBit>\n", "extensionBit>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t AdditionalAccessTechnologiesRecord__BSSGP_extensionBit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t AdditionalAccessTechnologiesRecord__BSSGP_extensionBit_descr_ = { "@BSSGP_Types.AdditionalAccessTechnologiesRecord_BSSGP.extensionBit", &BITSTRING_ber_, &AdditionalAccessTechnologiesRecord__BSSGP_extensionBit_raw_, NULL, &AdditionalAccessTechnologiesRecord__BSSGP_extensionBit_xer_, &BITSTRING_json_, &AdditionalAccessTechnologiesRecord__BSSGP_extensionBit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AdditionalAccessTechnologiesRecord__BSSGP_extensionBit_default_coding("RAW");
const TTCN_RAWdescriptor_t AdditionalAccessTechnologiesRecord__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for AdditionalAccessTechnologiesRecord__BSSGP
const TTCN_Typedescriptor_t AdditionalAccessTechnologiesRecord__BSSGP_descr_ = { "@BSSGP_Types.AdditionalAccessTechnologiesRecord_BSSGP", NULL, &AdditionalAccessTechnologiesRecord__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING AdditionalAccessTechnologiesRecord__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING AdditionalAccessTechnologiesRepetition__BSSGP_0_default_coding("RAW");
UNIVERSAL_CHARSTRING AdditionalAccessTechnologiesRepetition__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValues1111__BSSGP_additionalAccessTechnologiesRepetition_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_REVERSE,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MSRACapabilityValues1111__BSSGP_additionalAccessTechnologiesRepetition
const TTCN_Typedescriptor_t MSRACapabilityValues1111__BSSGP_additionalAccessTechnologiesRepetition_descr_ = { "@BSSGP_Types.MSRACapabilityValues1111_BSSGP.additionalAccessTechnologiesRepetition", NULL, &MSRACapabilityValues1111__BSSGP_additionalAccessTechnologiesRepetition_raw_, NULL, NULL, NULL, NULL, NULL, &AdditionalAccessTechnologiesRecord__BSSGP_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValues1111__BSSGP_additionalAccessTechnologiesRepetition_default_coding("RAW");
UNIVERSAL_CHARSTRING MSRACapabilityValues1111__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING MSRACapabilityValues__BSSGP_mSRACapabilityValues1111_default_coding("RAW");
UNIVERSAL_CHARSTRING MSRACapabilityValues__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValuesRecord__BSSGP_mSRACapabilityValues_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MSRACapabilityValuesRecord__BSSGP_mSRACapabilityValues
const TTCN_Typedescriptor_t MSRACapabilityValuesRecord__BSSGP_mSRACapabilityValues_descr_ = { "@BSSGP_Types.MSRACapabilityValuesRecord_BSSGP.mSRACapabilityValues", NULL, &MSRACapabilityValuesRecord__BSSGP_mSRACapabilityValues_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValuesRecord__BSSGP_mSRACapabilityValues_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValuesRecord__BSSGP_presenceBitMSRACap_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MSRACapabilityValuesRecord__BSSGP_presenceBitMSRACap_xer_ = { {"presenceBitMSRACap>\n", "presenceBitMSRACap>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MSRACapabilityValuesRecord__BSSGP_presenceBitMSRACap_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MSRACapabilityValuesRecord__BSSGP_presenceBitMSRACap_descr_ = { "@BSSGP_Types.MSRACapabilityValuesRecord_BSSGP.presenceBitMSRACap", &BITSTRING_ber_, &MSRACapabilityValuesRecord__BSSGP_presenceBitMSRACap_raw_, NULL, &MSRACapabilityValuesRecord__BSSGP_presenceBitMSRACap_xer_, &BITSTRING_json_, &MSRACapabilityValuesRecord__BSSGP_presenceBitMSRACap_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValuesRecord__BSSGP_presenceBitMSRACap_default_coding("RAW");
const TTCN_RAWdescriptor_t MSRACapabilityValuesRecord__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MSRACapabilityValuesRecord__BSSGP
const TTCN_Typedescriptor_t MSRACapabilityValuesRecord__BSSGP_descr_ = { "@BSSGP_Types.MSRACapabilityValuesRecord_BSSGP", NULL, &MSRACapabilityValuesRecord__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MSRACapabilityValuesRecord__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING MSRadioAccessCapabilityV__BSSGP_0_default_coding("RAW");
UNIVERSAL_CHARSTRING MSRadioAccessCapabilityV__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MS__Radio__Access__Capability_mSRadioAccessCapabilityV__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_REVERSE,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MS__Radio__Access__Capability_mSRadioAccessCapabilityV__BSSGP
const TTCN_Typedescriptor_t MS__Radio__Access__Capability_mSRadioAccessCapabilityV__BSSGP_descr_ = { "@BSSGP_Types.MS_Radio_Access_Capability.mSRadioAccessCapabilityV_BSSGP", NULL, &MS__Radio__Access__Capability_mSRadioAccessCapabilityV__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, &MSRACapabilityValuesRecord__BSSGP_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MS__Radio__Access__Capability_mSRadioAccessCapabilityV__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t MS__Radio__Access__Capability_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,8,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MS__Radio__Access__Capability
const TTCN_Typedescriptor_t MS__Radio__Access__Capability_descr_ = { "@BSSGP_Types.MS_Radio_Access_Capability", NULL, &MS__Radio__Access__Capability_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MS__Radio__Access__Capability_default_coding("RAW");
const XERdescriptor_t       OMC__Id__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int OMC__Id__BSSGP_iEI_oer_ext_arr_[0] = {};
const int OMC__Id__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t OMC__Id__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, OMC__Id__BSSGP_iEI_oer_ext_arr_, 0, OMC__Id__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t OMC__Id__BSSGP_iEI_descr_ = { "@BSSGP_Types.OMC_Id_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &OMC__Id__BSSGP_iEI_xer_, &OCTETSTRING_json_, &OMC__Id__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING OMC__Id__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t OMC__Id__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       OMC__Id__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t OMC__Id__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t OMC__Id__BSSGP_ext_descr_ = { "@BSSGP_Types.OMC_Id_BSSGP.ext", &BITSTRING_ber_, &OMC__Id__BSSGP_ext_raw_, NULL, &OMC__Id__BSSGP_ext_xer_, &BITSTRING_json_, &OMC__Id__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING OMC__Id__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t OMC__Id__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for OMC__Id__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t OMC__Id__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.OMC_Id_BSSGP.lengthIndicator", NULL, &OMC__Id__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING OMC__Id__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       OMC__Id__BSSGP_oMC__Identity_xer_ = { {"oMC_Identity>\n", "oMC_Identity>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int OMC__Id__BSSGP_oMC__Identity_oer_ext_arr_[0] = {};
const int OMC__Id__BSSGP_oMC__Identity_oer_p_[0] = {};
const TTCN_OERdescriptor_t OMC__Id__BSSGP_oMC__Identity_oer_ = { -1, TRUE, 20, FALSE, 0, 0, OMC__Id__BSSGP_oMC__Identity_oer_ext_arr_, 0, OMC__Id__BSSGP_oMC__Identity_oer_p_};
const TTCN_Typedescriptor_t OMC__Id__BSSGP_oMC__Identity_descr_ = { "@BSSGP_Types.OMC_Id_BSSGP.oMC_Identity", &OCTETSTRING_ber_, &General__Types::OCT20_raw_, &OCTETSTRING_text_, &OMC__Id__BSSGP_oMC__Identity_xer_, &OCTETSTRING_json_, &OMC__Id__BSSGP_oMC__Identity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING OMC__Id__BSSGP_oMC__Identity_default_coding("RAW");
const TTCN_RAWdescriptor_t OMC__Id__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for OMC__Id__BSSGP
const TTCN_Typedescriptor_t OMC__Id__BSSGP_descr_ = { "@BSSGP_Types.OMC_Id_BSSGP", NULL, &OMC__Id__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING OMC__Id__BSSGP_default_coding("RAW");
const XERdescriptor_t       PDU__in__Error_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__in__Error_iEI_oer_ext_arr_[0] = {};
const int PDU__in__Error_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__in__Error_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__in__Error_iEI_oer_ext_arr_, 0, PDU__in__Error_iEI_oer_p_};
const TTCN_Typedescriptor_t PDU__in__Error_iEI_descr_ = { "@BSSGP_Types.PDU_in_Error.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__in__Error_iEI_xer_, &OCTETSTRING_json_, &PDU__in__Error_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__in__Error_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__in__Error_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PDU__in__Error_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PDU__in__Error_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PDU__in__Error_ext_descr_ = { "@BSSGP_Types.PDU_in_Error.ext", &BITSTRING_ber_, &PDU__in__Error_ext_raw_, NULL, &PDU__in__Error_ext_xer_, &BITSTRING_json_, &PDU__in__Error_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__in__Error_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__in__Error_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__in__Error_lengthIndicator
const TTCN_Typedescriptor_t PDU__in__Error_lengthIndicator_descr_ = { "@BSSGP_Types.PDU_in_Error.lengthIndicator", NULL, &PDU__in__Error_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__in__Error_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       PDU__in__Error_erroneous__BSSGP__PDU_xer_ = { {"erroneous_BSSGP_PDU>\n", "erroneous_BSSGP_PDU>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__in__Error_erroneous__BSSGP__PDU_oer_ext_arr_[0] = {};
const int PDU__in__Error_erroneous__BSSGP__PDU_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__in__Error_erroneous__BSSGP__PDU_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDU__in__Error_erroneous__BSSGP__PDU_oer_ext_arr_, 0, PDU__in__Error_erroneous__BSSGP__PDU_oer_p_};
const TTCN_Typedescriptor_t PDU__in__Error_erroneous__BSSGP__PDU_descr_ = { "@BSSGP_Types.PDU_in_Error.erroneous_BSSGP_PDU", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &PDU__in__Error_erroneous__BSSGP__PDU_xer_, &OCTETSTRING_json_, &PDU__in__Error_erroneous__BSSGP__PDU_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__in__Error_erroneous__BSSGP__PDU_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__in__Error_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__in__Error
const TTCN_Typedescriptor_t PDU__in__Error_descr_ = { "@BSSGP_Types.PDU_in_Error", NULL, &PDU__in__Error_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__in__Error_default_coding("RAW");
const XERdescriptor_t       PDU__Lifetime_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__Lifetime_iEI_oer_ext_arr_[0] = {};
const int PDU__Lifetime_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__Lifetime_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__Lifetime_iEI_oer_ext_arr_, 0, PDU__Lifetime_iEI_oer_p_};
const TTCN_Typedescriptor_t PDU__Lifetime_iEI_descr_ = { "@BSSGP_Types.PDU_Lifetime.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__Lifetime_iEI_xer_, &OCTETSTRING_json_, &PDU__Lifetime_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__Lifetime_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__Lifetime_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PDU__Lifetime_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PDU__Lifetime_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PDU__Lifetime_ext_descr_ = { "@BSSGP_Types.PDU_Lifetime.ext", &BITSTRING_ber_, &PDU__Lifetime_ext_raw_, NULL, &PDU__Lifetime_ext_xer_, &BITSTRING_json_, &PDU__Lifetime_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__Lifetime_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__Lifetime_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__Lifetime_lengthIndicator
const TTCN_Typedescriptor_t PDU__Lifetime_lengthIndicator_descr_ = { "@BSSGP_Types.PDU_Lifetime.lengthIndicator", NULL, &PDU__Lifetime_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__Lifetime_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       PDU__Lifetime_delay__Value_xer_ = { {"delay_Value>\n", "delay_Value>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__Lifetime_delay__Value_oer_ext_arr_[0] = {};
const int PDU__Lifetime_delay__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__Lifetime_delay__Value_oer_ = { -1, TRUE, 2, FALSE, 0, 0, PDU__Lifetime_delay__Value_oer_ext_arr_, 0, PDU__Lifetime_delay__Value_oer_p_};
const TTCN_Typedescriptor_t PDU__Lifetime_delay__Value_descr_ = { "@BSSGP_Types.PDU_Lifetime.delay_Value", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &PDU__Lifetime_delay__Value_xer_, &OCTETSTRING_json_, &PDU__Lifetime_delay__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__Lifetime_delay__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__Lifetime_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__Lifetime
const TTCN_Typedescriptor_t PDU__Lifetime_descr_ = { "@BSSGP_Types.PDU_Lifetime", NULL, &PDU__Lifetime_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__Lifetime_default_coding("RAW");
const XERdescriptor_t       Priority__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Priority__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Priority__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Priority__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Priority__BSSGP_iEI_oer_ext_arr_, 0, Priority__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Priority__BSSGP_iEI_descr_ = { "@BSSGP_Types.Priority_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Priority__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Priority__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Priority__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Priority__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Priority__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Priority__BSSGP_ext_descr_ = { "@BSSGP_Types.Priority_BSSGP.ext", &BITSTRING_ber_, &Priority__BSSGP_ext_raw_, NULL, &Priority__BSSGP_ext_xer_, &BITSTRING_json_, &Priority__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Priority__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Priority__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Priority__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Priority_BSSGP.lengthIndicator", NULL, &Priority__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Priority__BSSGP_pvi_xer_ = { {"pvi>\n", "pvi>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Priority__BSSGP_pvi_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Priority__BSSGP_pvi_descr_ = { "@BSSGP_Types.Priority_BSSGP.pvi", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Priority__BSSGP_pvi_xer_, &BITSTRING_json_, &Priority__BSSGP_pvi_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__BSSGP_pvi_default_coding("RAW");
const XERdescriptor_t       Priority__BSSGP_qa_xer_ = { {"qa>\n", "qa>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Priority__BSSGP_qa_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Priority__BSSGP_qa_descr_ = { "@BSSGP_Types.Priority_BSSGP.qa", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Priority__BSSGP_qa_xer_, &BITSTRING_json_, &Priority__BSSGP_qa_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__BSSGP_qa_default_coding("RAW");
const XERdescriptor_t       Priority__BSSGP_priority__Level_xer_ = { {"priority_Level>\n", "priority_Level>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Priority__BSSGP_priority__Level_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Priority__BSSGP_priority__Level_descr_ = { "@BSSGP_Types.Priority_BSSGP.priority_Level", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &Priority__BSSGP_priority__Level_xer_, &BITSTRING_json_, &Priority__BSSGP_priority__Level_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__BSSGP_priority__Level_default_coding("RAW");
const XERdescriptor_t       Priority__BSSGP_pci_xer_ = { {"pci>\n", "pci>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Priority__BSSGP_pci_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Priority__BSSGP_pci_descr_ = { "@BSSGP_Types.Priority_BSSGP.pci", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Priority__BSSGP_pci_xer_, &BITSTRING_json_, &Priority__BSSGP_pci_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__BSSGP_pci_default_coding("RAW");
const XERdescriptor_t       Priority__BSSGP_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Priority__BSSGP_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Priority__BSSGP_spare_descr_ = { "@BSSGP_Types.Priority_BSSGP.spare", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Priority__BSSGP_spare_xer_, &BITSTRING_json_, &Priority__BSSGP_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__BSSGP_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Priority__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Priority__BSSGP
const TTCN_Typedescriptor_t Priority__BSSGP_descr_ = { "@BSSGP_Types.Priority_BSSGP", NULL, &Priority__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__BSSGP_default_coding("RAW");
const XERdescriptor_t       QoS__Profile_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int QoS__Profile_iEI_oer_ext_arr_[0] = {};
const int QoS__Profile_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t QoS__Profile_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, QoS__Profile_iEI_oer_ext_arr_, 0, QoS__Profile_iEI_oer_p_};
const TTCN_Typedescriptor_t QoS__Profile_iEI_descr_ = { "@BSSGP_Types.QoS_Profile.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &QoS__Profile_iEI_xer_, &OCTETSTRING_json_, &QoS__Profile_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t QoS__Profile_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       QoS__Profile_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile_ext_descr_ = { "@BSSGP_Types.QoS_Profile.ext", &BITSTRING_ber_, &QoS__Profile_ext_raw_, NULL, &QoS__Profile_ext_xer_, &BITSTRING_json_, &QoS__Profile_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t QoS__Profile_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for QoS__Profile_lengthIndicator
const TTCN_Typedescriptor_t QoS__Profile_lengthIndicator_descr_ = { "@BSSGP_Types.QoS_Profile.lengthIndicator", NULL, &QoS__Profile_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       QoS__Profile_peak__Bit__Rate_xer_ = { {"peak_Bit_Rate>\n", "peak_Bit_Rate>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int QoS__Profile_peak__Bit__Rate_oer_ext_arr_[0] = {};
const int QoS__Profile_peak__Bit__Rate_oer_p_[0] = {};
const TTCN_OERdescriptor_t QoS__Profile_peak__Bit__Rate_oer_ = { -1, TRUE, 2, FALSE, 0, 0, QoS__Profile_peak__Bit__Rate_oer_ext_arr_, 0, QoS__Profile_peak__Bit__Rate_oer_p_};
const TTCN_Typedescriptor_t QoS__Profile_peak__Bit__Rate_descr_ = { "@BSSGP_Types.QoS_Profile.peak_Bit_Rate", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &QoS__Profile_peak__Bit__Rate_xer_, &OCTETSTRING_json_, &QoS__Profile_peak__Bit__Rate_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile_peak__Bit__Rate_default_coding("RAW");
const XERdescriptor_t       QoS__Profile_precedence_xer_ = { {"precedence>\n", "precedence>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile_precedence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile_precedence_descr_ = { "@BSSGP_Types.QoS_Profile.precedence", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &QoS__Profile_precedence_xer_, &BITSTRING_json_, &QoS__Profile_precedence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile_precedence_default_coding("RAW");
const XERdescriptor_t       QoS__Profile_a__bit_xer_ = { {"a_bit>\n", "a_bit>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile_a__bit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile_a__bit_descr_ = { "@BSSGP_Types.QoS_Profile.a_bit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &QoS__Profile_a__bit_xer_, &BITSTRING_json_, &QoS__Profile_a__bit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile_a__bit_default_coding("RAW");
const XERdescriptor_t       QoS__Profile_t__bit_xer_ = { {"t_bit>\n", "t_bit>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile_t__bit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile_t__bit_descr_ = { "@BSSGP_Types.QoS_Profile.t_bit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &QoS__Profile_t__bit_xer_, &BITSTRING_json_, &QoS__Profile_t__bit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile_t__bit_default_coding("RAW");
const XERdescriptor_t       QoS__Profile_c__r__bit_xer_ = { {"c_r_bit>\n", "c_r_bit>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile_c__r__bit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile_c__r__bit_descr_ = { "@BSSGP_Types.QoS_Profile.c_r_bit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &QoS__Profile_c__r__bit_xer_, &BITSTRING_json_, &QoS__Profile_c__r__bit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile_c__r__bit_default_coding("RAW");
const XERdescriptor_t       QoS__Profile_peakBitRateGranularity_xer_ = { {"peakBitRateGranularity>\n", "peakBitRateGranularity>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile_peakBitRateGranularity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile_peakBitRateGranularity_descr_ = { "@BSSGP_Types.QoS_Profile.peakBitRateGranularity", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &QoS__Profile_peakBitRateGranularity_xer_, &BITSTRING_json_, &QoS__Profile_peakBitRateGranularity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile_peakBitRateGranularity_default_coding("RAW");
const TTCN_RAWdescriptor_t QoS__Profile_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for QoS__Profile
const TTCN_Typedescriptor_t QoS__Profile_descr_ = { "@BSSGP_Types.QoS_Profile", NULL, &QoS__Profile_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile_default_coding("RAW");
const XERdescriptor_t       QoS__Profile__V_peak__Bit__Rate_xer_ = { {"peak_Bit_Rate>\n", "peak_Bit_Rate>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int QoS__Profile__V_peak__Bit__Rate_oer_ext_arr_[0] = {};
const int QoS__Profile__V_peak__Bit__Rate_oer_p_[0] = {};
const TTCN_OERdescriptor_t QoS__Profile__V_peak__Bit__Rate_oer_ = { -1, TRUE, 2, FALSE, 0, 0, QoS__Profile__V_peak__Bit__Rate_oer_ext_arr_, 0, QoS__Profile__V_peak__Bit__Rate_oer_p_};
const TTCN_Typedescriptor_t QoS__Profile__V_peak__Bit__Rate_descr_ = { "@BSSGP_Types.QoS_Profile_V.peak_Bit_Rate", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &QoS__Profile__V_peak__Bit__Rate_xer_, &OCTETSTRING_json_, &QoS__Profile__V_peak__Bit__Rate_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile__V_peak__Bit__Rate_default_coding("RAW");
const XERdescriptor_t       QoS__Profile__V_precedence_xer_ = { {"precedence>\n", "precedence>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile__V_precedence_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile__V_precedence_descr_ = { "@BSSGP_Types.QoS_Profile_V.precedence", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &QoS__Profile__V_precedence_xer_, &BITSTRING_json_, &QoS__Profile__V_precedence_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile__V_precedence_default_coding("RAW");
const XERdescriptor_t       QoS__Profile__V_a__bit_xer_ = { {"a_bit>\n", "a_bit>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile__V_a__bit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile__V_a__bit_descr_ = { "@BSSGP_Types.QoS_Profile_V.a_bit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &QoS__Profile__V_a__bit_xer_, &BITSTRING_json_, &QoS__Profile__V_a__bit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile__V_a__bit_default_coding("RAW");
const XERdescriptor_t       QoS__Profile__V_t__bit_xer_ = { {"t_bit>\n", "t_bit>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile__V_t__bit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile__V_t__bit_descr_ = { "@BSSGP_Types.QoS_Profile_V.t_bit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &QoS__Profile__V_t__bit_xer_, &BITSTRING_json_, &QoS__Profile__V_t__bit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile__V_t__bit_default_coding("RAW");
const XERdescriptor_t       QoS__Profile__V_c__r__bit_xer_ = { {"c_r_bit>\n", "c_r_bit>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile__V_c__r__bit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile__V_c__r__bit_descr_ = { "@BSSGP_Types.QoS_Profile_V.c_r_bit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &QoS__Profile__V_c__r__bit_xer_, &BITSTRING_json_, &QoS__Profile__V_c__r__bit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile__V_c__r__bit_default_coding("RAW");
const XERdescriptor_t       QoS__Profile__V_peakBitRateGranularity_xer_ = { {"peakBitRateGranularity>\n", "peakBitRateGranularity>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t QoS__Profile__V_peakBitRateGranularity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t QoS__Profile__V_peakBitRateGranularity_descr_ = { "@BSSGP_Types.QoS_Profile_V.peakBitRateGranularity", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &QoS__Profile__V_peakBitRateGranularity_xer_, &BITSTRING_json_, &QoS__Profile__V_peakBitRateGranularity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile__V_peakBitRateGranularity_default_coding("RAW");
const TTCN_RAWdescriptor_t QoS__Profile__V_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for QoS__Profile__V
const TTCN_Typedescriptor_t QoS__Profile__V_descr_ = { "@BSSGP_Types.QoS_Profile_V", NULL, &QoS__Profile__V_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING QoS__Profile__V_default_coding("RAW");
const XERdescriptor_t       Radio__Cause_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Radio__Cause_iEI_oer_ext_arr_[0] = {};
const int Radio__Cause_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Radio__Cause_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Radio__Cause_iEI_oer_ext_arr_, 0, Radio__Cause_iEI_oer_p_};
const TTCN_Typedescriptor_t Radio__Cause_iEI_descr_ = { "@BSSGP_Types.Radio_Cause.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Radio__Cause_iEI_xer_, &OCTETSTRING_json_, &Radio__Cause_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Radio__Cause_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Radio__Cause_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Radio__Cause_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Radio__Cause_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Radio__Cause_ext_descr_ = { "@BSSGP_Types.Radio_Cause.ext", &BITSTRING_ber_, &Radio__Cause_ext_raw_, NULL, &Radio__Cause_ext_xer_, &BITSTRING_json_, &Radio__Cause_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Radio__Cause_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Radio__Cause_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Radio__Cause_lengthIndicator
const TTCN_Typedescriptor_t Radio__Cause_lengthIndicator_descr_ = { "@BSSGP_Types.Radio_Cause.lengthIndicator", NULL, &Radio__Cause_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Radio__Cause_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Radio__Cause_radio__Cause__Value_xer_ = { {"radio_Cause_Value>\n", "radio_Cause_Value>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Radio__Cause_radio__Cause__Value_oer_ext_arr_[0] = {};
const int Radio__Cause_radio__Cause__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t Radio__Cause_radio__Cause__Value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Radio__Cause_radio__Cause__Value_oer_ext_arr_, 0, Radio__Cause_radio__Cause__Value_oer_p_};
const TTCN_Typedescriptor_t Radio__Cause_radio__Cause__Value_descr_ = { "@BSSGP_Types.Radio_Cause.radio_Cause_Value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Radio__Cause_radio__Cause__Value_xer_, &OCTETSTRING_json_, &Radio__Cause_radio__Cause__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Radio__Cause_radio__Cause__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t Radio__Cause_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Radio__Cause
const TTCN_Typedescriptor_t Radio__Cause_descr_ = { "@BSSGP_Types.Radio_Cause", NULL, &Radio__Cause_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Radio__Cause_default_coding("RAW");
const XERdescriptor_t       RA__Cap__UPD__CAUSE_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RA__Cap__UPD__CAUSE_iEI_oer_ext_arr_[0] = {};
const int RA__Cap__UPD__CAUSE_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RA__Cap__UPD__CAUSE_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RA__Cap__UPD__CAUSE_iEI_oer_ext_arr_, 0, RA__Cap__UPD__CAUSE_iEI_oer_p_};
const TTCN_Typedescriptor_t RA__Cap__UPD__CAUSE_iEI_descr_ = { "@BSSGP_Types.RA_Cap_UPD_CAUSE.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RA__Cap__UPD__CAUSE_iEI_xer_, &OCTETSTRING_json_, &RA__Cap__UPD__CAUSE_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RA__Cap__UPD__CAUSE_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RA__Cap__UPD__CAUSE_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RA__Cap__UPD__CAUSE_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RA__Cap__UPD__CAUSE_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RA__Cap__UPD__CAUSE_ext_descr_ = { "@BSSGP_Types.RA_Cap_UPD_CAUSE.ext", &BITSTRING_ber_, &RA__Cap__UPD__CAUSE_ext_raw_, NULL, &RA__Cap__UPD__CAUSE_ext_xer_, &BITSTRING_json_, &RA__Cap__UPD__CAUSE_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RA__Cap__UPD__CAUSE_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RA__Cap__UPD__CAUSE_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RA__Cap__UPD__CAUSE_lengthIndicator
const TTCN_Typedescriptor_t RA__Cap__UPD__CAUSE_lengthIndicator_descr_ = { "@BSSGP_Types.RA_Cap_UPD_CAUSE.lengthIndicator", NULL, &RA__Cap__UPD__CAUSE_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RA__Cap__UPD__CAUSE_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       RA__Cap__UPD__CAUSE_rA__CAP__UPD__Cause__value_xer_ = { {"rA_CAP_UPD_Cause_value>\n", "rA_CAP_UPD_Cause_value>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RA__Cap__UPD__CAUSE_rA__CAP__UPD__Cause__value_oer_ext_arr_[0] = {};
const int RA__Cap__UPD__CAUSE_rA__CAP__UPD__Cause__value_oer_p_[0] = {};
const TTCN_OERdescriptor_t RA__Cap__UPD__CAUSE_rA__CAP__UPD__Cause__value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RA__Cap__UPD__CAUSE_rA__CAP__UPD__Cause__value_oer_ext_arr_, 0, RA__Cap__UPD__CAUSE_rA__CAP__UPD__Cause__value_oer_p_};
const TTCN_Typedescriptor_t RA__Cap__UPD__CAUSE_rA__CAP__UPD__Cause__value_descr_ = { "@BSSGP_Types.RA_Cap_UPD_CAUSE.rA_CAP_UPD_Cause_value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RA__Cap__UPD__CAUSE_rA__CAP__UPD__Cause__value_xer_, &OCTETSTRING_json_, &RA__Cap__UPD__CAUSE_rA__CAP__UPD__Cause__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RA__Cap__UPD__CAUSE_rA__CAP__UPD__Cause__value_default_coding("RAW");
const TTCN_RAWdescriptor_t RA__Cap__UPD__CAUSE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RA__Cap__UPD__CAUSE
const TTCN_Typedescriptor_t RA__Cap__UPD__CAUSE_descr_ = { "@BSSGP_Types.RA_Cap_UPD_CAUSE", NULL, &RA__Cap__UPD__CAUSE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RA__Cap__UPD__CAUSE_default_coding("RAW");
const XERdescriptor_t       Routeing__Area_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Routeing__Area_iEI_oer_ext_arr_[0] = {};
const int Routeing__Area_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Routeing__Area_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Routeing__Area_iEI_oer_ext_arr_, 0, Routeing__Area_iEI_oer_p_};
const TTCN_Typedescriptor_t Routeing__Area_iEI_descr_ = { "@BSSGP_Types.Routeing_Area.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Routeing__Area_iEI_xer_, &OCTETSTRING_json_, &Routeing__Area_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Routeing__Area_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Routeing__Area_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Routeing__Area_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Routeing__Area_ext_descr_ = { "@BSSGP_Types.Routeing_Area.ext", &BITSTRING_ber_, &Routeing__Area_ext_raw_, NULL, &Routeing__Area_ext_xer_, &BITSTRING_json_, &Routeing__Area_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Routeing__Area_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Routeing__Area_lengthIndicator
const TTCN_Typedescriptor_t Routeing__Area_lengthIndicator_descr_ = { "@BSSGP_Types.Routeing_Area.lengthIndicator", NULL, &Routeing__Area_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Routeing__Area_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Routeing__Area_mccDigit1_descr_ = { "@BSSGP_Types.Routeing_Area.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Routeing__Area_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_mccDigit1_default_coding("RAW");
const XERdescriptor_t       Routeing__Area_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Routeing__Area_mccDigit2_descr_ = { "@BSSGP_Types.Routeing_Area.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Routeing__Area_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_mccDigit2_default_coding("RAW");
const XERdescriptor_t       Routeing__Area_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Routeing__Area_mccDigit3_descr_ = { "@BSSGP_Types.Routeing_Area.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Routeing__Area_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_mccDigit3_default_coding("RAW");
const XERdescriptor_t       Routeing__Area_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Routeing__Area_mncDigit3_descr_ = { "@BSSGP_Types.Routeing_Area.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Routeing__Area_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_mncDigit3_default_coding("RAW");
const XERdescriptor_t       Routeing__Area_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Routeing__Area_mncDigit1_descr_ = { "@BSSGP_Types.Routeing_Area.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Routeing__Area_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_mncDigit1_default_coding("RAW");
const XERdescriptor_t       Routeing__Area_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Routeing__Area_mncDigit2_descr_ = { "@BSSGP_Types.Routeing_Area.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Routeing__Area_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_mncDigit2_default_coding("RAW");
const XERdescriptor_t       Routeing__Area_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Routeing__Area_lac_oer_ext_arr_[0] = {};
const int Routeing__Area_lac_oer_p_[0] = {};
const TTCN_OERdescriptor_t Routeing__Area_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Routeing__Area_lac_oer_ext_arr_, 0, Routeing__Area_lac_oer_p_};
const TTCN_Typedescriptor_t Routeing__Area_lac_descr_ = { "@BSSGP_Types.Routeing_Area.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Routeing__Area_lac_xer_, &OCTETSTRING_json_, &Routeing__Area_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_lac_default_coding("RAW");
const XERdescriptor_t       Routeing__Area_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Routeing__Area_rac_oer_ext_arr_[0] = {};
const int Routeing__Area_rac_oer_p_[0] = {};
const TTCN_OERdescriptor_t Routeing__Area_rac_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Routeing__Area_rac_oer_ext_arr_, 0, Routeing__Area_rac_oer_p_};
const TTCN_Typedescriptor_t Routeing__Area_rac_descr_ = { "@BSSGP_Types.Routeing_Area.rac", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Routeing__Area_rac_xer_, &OCTETSTRING_json_, &Routeing__Area_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_rac_default_coding("RAW");
const TTCN_RAWdescriptor_t Routeing__Area_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Routeing__Area
const TTCN_Typedescriptor_t Routeing__Area_descr_ = { "@BSSGP_Types.Routeing_Area", NULL, &Routeing__Area_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Routeing__Area_default_coding("RAW");
const XERdescriptor_t       R__default__MS_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int R__default__MS_iEI_oer_ext_arr_[0] = {};
const int R__default__MS_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t R__default__MS_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, R__default__MS_iEI_oer_ext_arr_, 0, R__default__MS_iEI_oer_p_};
const TTCN_Typedescriptor_t R__default__MS_iEI_descr_ = { "@BSSGP_Types.R_default_MS.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &R__default__MS_iEI_xer_, &OCTETSTRING_json_, &R__default__MS_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING R__default__MS_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t R__default__MS_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       R__default__MS_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t R__default__MS_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t R__default__MS_ext_descr_ = { "@BSSGP_Types.R_default_MS.ext", &BITSTRING_ber_, &R__default__MS_ext_raw_, NULL, &R__default__MS_ext_xer_, &BITSTRING_json_, &R__default__MS_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING R__default__MS_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t R__default__MS_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for R__default__MS_lengthIndicator
const TTCN_Typedescriptor_t R__default__MS_lengthIndicator_descr_ = { "@BSSGP_Types.R_default_MS.lengthIndicator", NULL, &R__default__MS_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING R__default__MS_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       R__default__MS_r__default__MS__value_xer_ = { {"r_default_MS_value>\n", "r_default_MS_value>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int R__default__MS_r__default__MS__value_oer_ext_arr_[0] = {};
const int R__default__MS_r__default__MS__value_oer_p_[0] = {};
const TTCN_OERdescriptor_t R__default__MS_r__default__MS__value_oer_ = { -1, TRUE, 2, FALSE, 0, 0, R__default__MS_r__default__MS__value_oer_ext_arr_, 0, R__default__MS_r__default__MS__value_oer_p_};
const TTCN_Typedescriptor_t R__default__MS_r__default__MS__value_descr_ = { "@BSSGP_Types.R_default_MS.r_default_MS_value", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &R__default__MS_r__default__MS__value_xer_, &OCTETSTRING_json_, &R__default__MS_r__default__MS__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING R__default__MS_r__default__MS__value_default_coding("RAW");
const TTCN_RAWdescriptor_t R__default__MS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for R__default__MS
const TTCN_Typedescriptor_t R__default__MS_descr_ = { "@BSSGP_Types.R_default_MS", NULL, &R__default__MS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING R__default__MS_default_coding("RAW");
const XERdescriptor_t       Suspend__Reference__Number_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Suspend__Reference__Number_iEI_oer_ext_arr_[0] = {};
const int Suspend__Reference__Number_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Suspend__Reference__Number_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Suspend__Reference__Number_iEI_oer_ext_arr_, 0, Suspend__Reference__Number_iEI_oer_p_};
const TTCN_Typedescriptor_t Suspend__Reference__Number_iEI_descr_ = { "@BSSGP_Types.Suspend_Reference_Number.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Suspend__Reference__Number_iEI_xer_, &OCTETSTRING_json_, &Suspend__Reference__Number_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Suspend__Reference__Number_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Suspend__Reference__Number_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Suspend__Reference__Number_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Suspend__Reference__Number_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Suspend__Reference__Number_ext_descr_ = { "@BSSGP_Types.Suspend_Reference_Number.ext", &BITSTRING_ber_, &Suspend__Reference__Number_ext_raw_, NULL, &Suspend__Reference__Number_ext_xer_, &BITSTRING_json_, &Suspend__Reference__Number_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Suspend__Reference__Number_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Suspend__Reference__Number_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Suspend__Reference__Number_lengthIndicator
const TTCN_Typedescriptor_t Suspend__Reference__Number_lengthIndicator_descr_ = { "@BSSGP_Types.Suspend_Reference_Number.lengthIndicator", NULL, &Suspend__Reference__Number_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Suspend__Reference__Number_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Suspend__Reference__Number_suspend__Reference__Number__value_xer_ = { {"suspend_Reference_Number_value>\n", "suspend_Reference_Number_value>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Suspend__Reference__Number_suspend__Reference__Number__value_oer_ext_arr_[0] = {};
const int Suspend__Reference__Number_suspend__Reference__Number__value_oer_p_[0] = {};
const TTCN_OERdescriptor_t Suspend__Reference__Number_suspend__Reference__Number__value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Suspend__Reference__Number_suspend__Reference__Number__value_oer_ext_arr_, 0, Suspend__Reference__Number_suspend__Reference__Number__value_oer_p_};
const TTCN_Typedescriptor_t Suspend__Reference__Number_suspend__Reference__Number__value_descr_ = { "@BSSGP_Types.Suspend_Reference_Number.suspend_Reference_Number_value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Suspend__Reference__Number_suspend__Reference__Number__value_xer_, &OCTETSTRING_json_, &Suspend__Reference__Number_suspend__Reference__Number__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Suspend__Reference__Number_suspend__Reference__Number__value_default_coding("RAW");
const TTCN_RAWdescriptor_t Suspend__Reference__Number_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Suspend__Reference__Number
const TTCN_Typedescriptor_t Suspend__Reference__Number_descr_ = { "@BSSGP_Types.Suspend_Reference_Number", NULL, &Suspend__Reference__Number_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Suspend__Reference__Number_default_coding("RAW");
const XERdescriptor_t       Tag_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Tag_iEI_oer_ext_arr_[0] = {};
const int Tag_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Tag_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Tag_iEI_oer_ext_arr_, 0, Tag_iEI_oer_p_};
const TTCN_Typedescriptor_t Tag_iEI_descr_ = { "@BSSGP_Types.Tag.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Tag_iEI_xer_, &OCTETSTRING_json_, &Tag_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Tag_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Tag_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Tag_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Tag_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Tag_ext_descr_ = { "@BSSGP_Types.Tag.ext", &BITSTRING_ber_, &Tag_ext_raw_, NULL, &Tag_ext_xer_, &BITSTRING_json_, &Tag_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Tag_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Tag_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Tag_lengthIndicator
const TTCN_Typedescriptor_t Tag_lengthIndicator_descr_ = { "@BSSGP_Types.Tag.lengthIndicator", NULL, &Tag_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Tag_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Tag_unstructured__Value_xer_ = { {"unstructured_Value>\n", "unstructured_Value>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Tag_unstructured__Value_oer_ext_arr_[0] = {};
const int Tag_unstructured__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t Tag_unstructured__Value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Tag_unstructured__Value_oer_ext_arr_, 0, Tag_unstructured__Value_oer_p_};
const TTCN_Typedescriptor_t Tag_unstructured__Value_descr_ = { "@BSSGP_Types.Tag.unstructured_Value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Tag_unstructured__Value_xer_, &OCTETSTRING_json_, &Tag_unstructured__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Tag_unstructured__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t Tag_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Tag
const TTCN_Typedescriptor_t Tag_descr_ = { "@BSSGP_Types.Tag", NULL, &Tag_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Tag_default_coding("RAW");
const XERdescriptor_t       TLLI__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int TLLI__BSSGP_iEI_oer_ext_arr_[0] = {};
const int TLLI__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t TLLI__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TLLI__BSSGP_iEI_oer_ext_arr_, 0, TLLI__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t TLLI__BSSGP_iEI_descr_ = { "@BSSGP_Types.TLLI_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TLLI__BSSGP_iEI_xer_, &OCTETSTRING_json_, &TLLI__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TLLI__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t TLLI__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       TLLI__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TLLI__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TLLI__BSSGP_ext_descr_ = { "@BSSGP_Types.TLLI_BSSGP.ext", &BITSTRING_ber_, &TLLI__BSSGP_ext_raw_, NULL, &TLLI__BSSGP_ext_xer_, &BITSTRING_json_, &TLLI__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TLLI__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t TLLI__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for TLLI__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t TLLI__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.TLLI_BSSGP.lengthIndicator", NULL, &TLLI__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TLLI__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       TLLI__BSSGP_tLLI__Value_xer_ = { {"tLLI_Value>\n", "tLLI_Value>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int TLLI__BSSGP_tLLI__Value_oer_ext_arr_[0] = {};
const int TLLI__BSSGP_tLLI__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t TLLI__BSSGP_tLLI__Value_oer_ = { -1, TRUE, 4, FALSE, 0, 0, TLLI__BSSGP_tLLI__Value_oer_ext_arr_, 0, TLLI__BSSGP_tLLI__Value_oer_p_};
const TTCN_Typedescriptor_t TLLI__BSSGP_tLLI__Value_descr_ = { "@BSSGP_Types.TLLI_BSSGP.tLLI_Value", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &TLLI__BSSGP_tLLI__Value_xer_, &OCTETSTRING_json_, &TLLI__BSSGP_tLLI__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TLLI__BSSGP_tLLI__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t TLLI__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for TLLI__BSSGP
const TTCN_Typedescriptor_t TLLI__BSSGP_descr_ = { "@BSSGP_Types.TLLI_BSSGP", NULL, &TLLI__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TLLI__BSSGP_default_coding("RAW");
const XERdescriptor_t       TMSI__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int TMSI__BSSGP_iEI_oer_ext_arr_[0] = {};
const int TMSI__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t TMSI__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TMSI__BSSGP_iEI_oer_ext_arr_, 0, TMSI__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t TMSI__BSSGP_iEI_descr_ = { "@BSSGP_Types.TMSI_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TMSI__BSSGP_iEI_xer_, &OCTETSTRING_json_, &TMSI__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMSI__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t TMSI__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       TMSI__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TMSI__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TMSI__BSSGP_ext_descr_ = { "@BSSGP_Types.TMSI_BSSGP.ext", &BITSTRING_ber_, &TMSI__BSSGP_ext_raw_, NULL, &TMSI__BSSGP_ext_xer_, &BITSTRING_json_, &TMSI__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMSI__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t TMSI__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for TMSI__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t TMSI__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.TMSI_BSSGP.lengthIndicator", NULL, &TMSI__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMSI__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       TMSI__BSSGP_tMSI__Value_xer_ = { {"tMSI_Value>\n", "tMSI_Value>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int TMSI__BSSGP_tMSI__Value_oer_ext_arr_[0] = {};
const int TMSI__BSSGP_tMSI__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t TMSI__BSSGP_tMSI__Value_oer_ = { -1, TRUE, 4, FALSE, 0, 0, TMSI__BSSGP_tMSI__Value_oer_ext_arr_, 0, TMSI__BSSGP_tMSI__Value_oer_p_};
const TTCN_Typedescriptor_t TMSI__BSSGP_tMSI__Value_descr_ = { "@BSSGP_Types.TMSI_BSSGP.tMSI_Value", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &TMSI__BSSGP_tMSI__Value_xer_, &OCTETSTRING_json_, &TMSI__BSSGP_tMSI__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMSI__BSSGP_tMSI__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t TMSI__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for TMSI__BSSGP
const TTCN_Typedescriptor_t TMSI__BSSGP_descr_ = { "@BSSGP_Types.TMSI_BSSGP", NULL, &TMSI__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMSI__BSSGP_default_coding("RAW");
const XERdescriptor_t       Trace__Reference__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Trace__Reference__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Trace__Reference__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Trace__Reference__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Trace__Reference__BSSGP_iEI_oer_ext_arr_, 0, Trace__Reference__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Trace__Reference__BSSGP_iEI_descr_ = { "@BSSGP_Types.Trace_Reference_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Trace__Reference__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Trace__Reference__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trace__Reference__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Trace__Reference__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Trace__Reference__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Trace__Reference__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Trace__Reference__BSSGP_ext_descr_ = { "@BSSGP_Types.Trace_Reference_BSSGP.ext", &BITSTRING_ber_, &Trace__Reference__BSSGP_ext_raw_, NULL, &Trace__Reference__BSSGP_ext_xer_, &BITSTRING_json_, &Trace__Reference__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trace__Reference__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Trace__Reference__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Trace__Reference__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Trace__Reference__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Trace_Reference_BSSGP.lengthIndicator", NULL, &Trace__Reference__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trace__Reference__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Trace__Reference__BSSGP_trace__Reference_xer_ = { {"trace_Reference>\n", "trace_Reference>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Trace__Reference__BSSGP_trace__Reference_oer_ext_arr_[0] = {};
const int Trace__Reference__BSSGP_trace__Reference_oer_p_[0] = {};
const TTCN_OERdescriptor_t Trace__Reference__BSSGP_trace__Reference_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Trace__Reference__BSSGP_trace__Reference_oer_ext_arr_, 0, Trace__Reference__BSSGP_trace__Reference_oer_p_};
const TTCN_Typedescriptor_t Trace__Reference__BSSGP_trace__Reference_descr_ = { "@BSSGP_Types.Trace_Reference_BSSGP.trace_Reference", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Trace__Reference__BSSGP_trace__Reference_xer_, &OCTETSTRING_json_, &Trace__Reference__BSSGP_trace__Reference_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trace__Reference__BSSGP_trace__Reference_default_coding("RAW");
const TTCN_RAWdescriptor_t Trace__Reference__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Trace__Reference__BSSGP
const TTCN_Typedescriptor_t Trace__Reference__BSSGP_descr_ = { "@BSSGP_Types.Trace_Reference_BSSGP", NULL, &Trace__Reference__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trace__Reference__BSSGP_default_coding("RAW");
const XERdescriptor_t       Trace__Type__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Trace__Type__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Trace__Type__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Trace__Type__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Trace__Type__BSSGP_iEI_oer_ext_arr_, 0, Trace__Type__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Trace__Type__BSSGP_iEI_descr_ = { "@BSSGP_Types.Trace_Type_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Trace__Type__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Trace__Type__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trace__Type__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Trace__Type__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Trace__Type__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Trace__Type__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Trace__Type__BSSGP_ext_descr_ = { "@BSSGP_Types.Trace_Type_BSSGP.ext", &BITSTRING_ber_, &Trace__Type__BSSGP_ext_raw_, NULL, &Trace__Type__BSSGP_ext_xer_, &BITSTRING_json_, &Trace__Type__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trace__Type__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Trace__Type__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Trace__Type__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Trace__Type__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Trace_Type_BSSGP.lengthIndicator", NULL, &Trace__Type__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trace__Type__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Trace__Type__BSSGP_equipment__Trace_xer_ = { {"equipment_Trace>\n", "equipment_Trace>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Trace__Type__BSSGP_equipment__Trace_oer_ext_arr_[0] = {};
const int Trace__Type__BSSGP_equipment__Trace_oer_p_[0] = {};
const TTCN_OERdescriptor_t Trace__Type__BSSGP_equipment__Trace_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Trace__Type__BSSGP_equipment__Trace_oer_ext_arr_, 0, Trace__Type__BSSGP_equipment__Trace_oer_p_};
const TTCN_Typedescriptor_t Trace__Type__BSSGP_equipment__Trace_descr_ = { "@BSSGP_Types.Trace_Type_BSSGP.equipment_Trace", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Trace__Type__BSSGP_equipment__Trace_xer_, &OCTETSTRING_json_, &Trace__Type__BSSGP_equipment__Trace_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trace__Type__BSSGP_equipment__Trace_default_coding("RAW");
const TTCN_RAWdescriptor_t Trace__Type__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Trace__Type__BSSGP
const TTCN_Typedescriptor_t Trace__Type__BSSGP_descr_ = { "@BSSGP_Types.Trace_Type_BSSGP", NULL, &Trace__Type__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trace__Type__BSSGP_default_coding("RAW");
const XERdescriptor_t       TransactionId__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int TransactionId__BSSGP_iEI_oer_ext_arr_[0] = {};
const int TransactionId__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t TransactionId__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TransactionId__BSSGP_iEI_oer_ext_arr_, 0, TransactionId__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t TransactionId__BSSGP_iEI_descr_ = { "@BSSGP_Types.TransactionId_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TransactionId__BSSGP_iEI_xer_, &OCTETSTRING_json_, &TransactionId__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TransactionId__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t TransactionId__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       TransactionId__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TransactionId__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TransactionId__BSSGP_ext_descr_ = { "@BSSGP_Types.TransactionId_BSSGP.ext", &BITSTRING_ber_, &TransactionId__BSSGP_ext_raw_, NULL, &TransactionId__BSSGP_ext_xer_, &BITSTRING_json_, &TransactionId__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TransactionId__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t TransactionId__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for TransactionId__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t TransactionId__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.TransactionId_BSSGP.lengthIndicator", NULL, &TransactionId__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TransactionId__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       TransactionId__BSSGP_transaction__Id_xer_ = { {"transaction_Id>\n", "transaction_Id>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int TransactionId__BSSGP_transaction__Id_oer_ext_arr_[0] = {};
const int TransactionId__BSSGP_transaction__Id_oer_p_[0] = {};
const TTCN_OERdescriptor_t TransactionId__BSSGP_transaction__Id_oer_ = { -1, TRUE, 2, FALSE, 0, 0, TransactionId__BSSGP_transaction__Id_oer_ext_arr_, 0, TransactionId__BSSGP_transaction__Id_oer_p_};
const TTCN_Typedescriptor_t TransactionId__BSSGP_transaction__Id_descr_ = { "@BSSGP_Types.TransactionId_BSSGP.transaction_Id", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &TransactionId__BSSGP_transaction__Id_xer_, &OCTETSTRING_json_, &TransactionId__BSSGP_transaction__Id_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TransactionId__BSSGP_transaction__Id_default_coding("RAW");
const TTCN_RAWdescriptor_t TransactionId__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for TransactionId__BSSGP
const TTCN_Typedescriptor_t TransactionId__BSSGP_descr_ = { "@BSSGP_Types.TransactionId_BSSGP", NULL, &TransactionId__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TransactionId__BSSGP_default_coding("RAW");
const XERdescriptor_t       Trigger__Id__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Trigger__Id__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Trigger__Id__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Trigger__Id__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Trigger__Id__BSSGP_iEI_oer_ext_arr_, 0, Trigger__Id__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Trigger__Id__BSSGP_iEI_descr_ = { "@BSSGP_Types.Trigger_Id_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Trigger__Id__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Trigger__Id__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trigger__Id__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Trigger__Id__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Trigger__Id__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Trigger__Id__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Trigger__Id__BSSGP_ext_descr_ = { "@BSSGP_Types.Trigger_Id_BSSGP.ext", &BITSTRING_ber_, &Trigger__Id__BSSGP_ext_raw_, NULL, &Trigger__Id__BSSGP_ext_xer_, &BITSTRING_json_, &Trigger__Id__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trigger__Id__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Trigger__Id__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Trigger__Id__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Trigger__Id__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Trigger_Id_BSSGP.lengthIndicator", NULL, &Trigger__Id__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trigger__Id__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Trigger__Id__BSSGP_entity__Identity_xer_ = { {"entity_Identity>\n", "entity_Identity>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Trigger__Id__BSSGP_entity__Identity_oer_ext_arr_[0] = {};
const int Trigger__Id__BSSGP_entity__Identity_oer_p_[0] = {};
const TTCN_OERdescriptor_t Trigger__Id__BSSGP_entity__Identity_oer_ = { -1, TRUE, 20, FALSE, 0, 0, Trigger__Id__BSSGP_entity__Identity_oer_ext_arr_, 0, Trigger__Id__BSSGP_entity__Identity_oer_p_};
const TTCN_Typedescriptor_t Trigger__Id__BSSGP_entity__Identity_descr_ = { "@BSSGP_Types.Trigger_Id_BSSGP.entity_Identity", &OCTETSTRING_ber_, &General__Types::OCT20_raw_, &OCTETSTRING_text_, &Trigger__Id__BSSGP_entity__Identity_xer_, &OCTETSTRING_json_, &Trigger__Id__BSSGP_entity__Identity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trigger__Id__BSSGP_entity__Identity_default_coding("RAW");
const TTCN_RAWdescriptor_t Trigger__Id__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Trigger__Id__BSSGP
const TTCN_Typedescriptor_t Trigger__Id__BSSGP_descr_ = { "@BSSGP_Types.Trigger_Id_BSSGP", NULL, &Trigger__Id__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Trigger__Id__BSSGP_default_coding("RAW");
const XERdescriptor_t       Number__of__octets__affected_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Number__of__octets__affected_iEI_oer_ext_arr_[0] = {};
const int Number__of__octets__affected_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Number__of__octets__affected_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Number__of__octets__affected_iEI_oer_ext_arr_, 0, Number__of__octets__affected_iEI_oer_p_};
const TTCN_Typedescriptor_t Number__of__octets__affected_iEI_descr_ = { "@BSSGP_Types.Number_of_octets_affected.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Number__of__octets__affected_iEI_xer_, &OCTETSTRING_json_, &Number__of__octets__affected_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Number__of__octets__affected_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Number__of__octets__affected_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Number__of__octets__affected_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Number__of__octets__affected_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Number__of__octets__affected_ext_descr_ = { "@BSSGP_Types.Number_of_octets_affected.ext", &BITSTRING_ber_, &Number__of__octets__affected_ext_raw_, NULL, &Number__of__octets__affected_ext_xer_, &BITSTRING_json_, &Number__of__octets__affected_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Number__of__octets__affected_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Number__of__octets__affected_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Number__of__octets__affected_lengthIndicator
const TTCN_Typedescriptor_t Number__of__octets__affected_lengthIndicator_descr_ = { "@BSSGP_Types.Number_of_octets_affected.lengthIndicator", NULL, &Number__of__octets__affected_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Number__of__octets__affected_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Number__of__octets__affected_number__of__octets__transfered__or__deleted_xer_ = { {"number_of_octets_transfered_or_deleted>\n", "number_of_octets_transfered_or_deleted>\n"}, {40, 40}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Number__of__octets__affected_number__of__octets__transfered__or__deleted_oer_ext_arr_[0] = {};
const int Number__of__octets__affected_number__of__octets__transfered__or__deleted_oer_p_[0] = {};
const TTCN_OERdescriptor_t Number__of__octets__affected_number__of__octets__transfered__or__deleted_oer_ = { -1, TRUE, 3, FALSE, 0, 0, Number__of__octets__affected_number__of__octets__transfered__or__deleted_oer_ext_arr_, 0, Number__of__octets__affected_number__of__octets__transfered__or__deleted_oer_p_};
const TTCN_Typedescriptor_t Number__of__octets__affected_number__of__octets__transfered__or__deleted_descr_ = { "@BSSGP_Types.Number_of_octets_affected.number_of_octets_transfered_or_deleted", &OCTETSTRING_ber_, &General__Types::OCT3_raw_, &OCTETSTRING_text_, &Number__of__octets__affected_number__of__octets__transfered__or__deleted_xer_, &OCTETSTRING_json_, &Number__of__octets__affected_number__of__octets__transfered__or__deleted_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Number__of__octets__affected_number__of__octets__transfered__or__deleted_default_coding("RAW");
const TTCN_RAWdescriptor_t Number__of__octets__affected_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Number__of__octets__affected
const TTCN_Typedescriptor_t Number__of__octets__affected_descr_ = { "@BSSGP_Types.Number_of_octets_affected", NULL, &Number__of__octets__affected_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Number__of__octets__affected_default_coding("RAW");
const XERdescriptor_t       PFI_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PFI_iEI_oer_ext_arr_[0] = {};
const int PFI_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t PFI_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PFI_iEI_oer_ext_arr_, 0, PFI_iEI_oer_p_};
const TTCN_Typedescriptor_t PFI_iEI_descr_ = { "@BSSGP_Types.PFI.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PFI_iEI_xer_, &OCTETSTRING_json_, &PFI_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFI_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t PFI_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PFI_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PFI_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PFI_ext_descr_ = { "@BSSGP_Types.PFI.ext", &BITSTRING_ber_, &PFI_ext_raw_, NULL, &PFI_ext_xer_, &BITSTRING_json_, &PFI_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFI_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t PFI_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PFI_lengthIndicator
const TTCN_Typedescriptor_t PFI_lengthIndicator_descr_ = { "@BSSGP_Types.PFI.lengthIndicator", NULL, &PFI_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFI_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       PFI_pFI__Value_xer_ = { {"pFI_Value>\n", "pFI_Value>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PFI_pFI__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PFI_pFI__Value_descr_ = { "@BSSGP_Types.PFI.pFI_Value", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &PFI_pFI__Value_xer_, &BITSTRING_json_, &PFI_pFI__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFI_pFI__Value_default_coding("RAW");
const XERdescriptor_t       PFI_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PFI_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PFI_spare_descr_ = { "@BSSGP_Types.PFI.spare", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PFI_spare_xer_, &BITSTRING_json_, &PFI_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFI_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t PFI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PFI
const TTCN_Typedescriptor_t PFI_descr_ = { "@BSSGP_Types.PFI", NULL, &PFI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFI_default_coding("RAW");
const XERdescriptor_t       ABQP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ABQP_iEI_oer_ext_arr_[0] = {};
const int ABQP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t ABQP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ABQP_iEI_oer_ext_arr_, 0, ABQP_iEI_oer_p_};
const TTCN_Typedescriptor_t ABQP_iEI_descr_ = { "@BSSGP_Types.ABQP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ABQP_iEI_xer_, &OCTETSTRING_json_, &ABQP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t ABQP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       ABQP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_ext_descr_ = { "@BSSGP_Types.ABQP.ext", &BITSTRING_ber_, &ABQP_ext_raw_, NULL, &ABQP_ext_xer_, &BITSTRING_json_, &ABQP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t ABQP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ABQP_lengthIndicator
const TTCN_Typedescriptor_t ABQP_lengthIndicator_descr_ = { "@BSSGP_Types.ABQP.lengthIndicator", NULL, &ABQP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       ABQP_reliabilityClass_xer_ = { {"reliabilityClass>\n", "reliabilityClass>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_reliabilityClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_reliabilityClass_descr_ = { "@BSSGP_Types.ABQP.reliabilityClass", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ABQP_reliabilityClass_xer_, &BITSTRING_json_, &ABQP_reliabilityClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_reliabilityClass_default_coding("RAW");
const XERdescriptor_t       ABQP_delayClass_xer_ = { {"delayClass>\n", "delayClass>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_delayClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_delayClass_descr_ = { "@BSSGP_Types.ABQP.delayClass", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ABQP_delayClass_xer_, &BITSTRING_json_, &ABQP_delayClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_delayClass_default_coding("RAW");
const XERdescriptor_t       ABQP_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_spare1_descr_ = { "@BSSGP_Types.ABQP.spare1", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &ABQP_spare1_xer_, &BITSTRING_json_, &ABQP_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_spare1_default_coding("RAW");
const XERdescriptor_t       ABQP_precedenceClass_xer_ = { {"precedenceClass>\n", "precedenceClass>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_precedenceClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_precedenceClass_descr_ = { "@BSSGP_Types.ABQP.precedenceClass", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ABQP_precedenceClass_xer_, &BITSTRING_json_, &ABQP_precedenceClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_precedenceClass_default_coding("RAW");
const XERdescriptor_t       ABQP_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_spare2_descr_ = { "@BSSGP_Types.ABQP.spare2", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ABQP_spare2_xer_, &BITSTRING_json_, &ABQP_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_spare2_default_coding("RAW");
const XERdescriptor_t       ABQP_peakThroughput_xer_ = { {"peakThroughput>\n", "peakThroughput>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_peakThroughput_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_peakThroughput_descr_ = { "@BSSGP_Types.ABQP.peakThroughput", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &ABQP_peakThroughput_xer_, &BITSTRING_json_, &ABQP_peakThroughput_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_peakThroughput_default_coding("RAW");
const XERdescriptor_t       ABQP_meanThroughput_xer_ = { {"meanThroughput>\n", "meanThroughput>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_meanThroughput_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_meanThroughput_descr_ = { "@BSSGP_Types.ABQP.meanThroughput", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &ABQP_meanThroughput_xer_, &BITSTRING_json_, &ABQP_meanThroughput_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_meanThroughput_default_coding("RAW");
const XERdescriptor_t       ABQP_spare3_xer_ = { {"spare3>\n", "spare3>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_spare3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_spare3_descr_ = { "@BSSGP_Types.ABQP.spare3", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ABQP_spare3_xer_, &BITSTRING_json_, &ABQP_spare3_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_spare3_default_coding("RAW");
const TTCN_RAWdescriptor_t ABQP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ABQP
const TTCN_Typedescriptor_t ABQP_descr_ = { "@BSSGP_Types.ABQP", NULL, &ABQP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       ABQP_deliverErroneusSDU_xer_ = { {"deliverErroneusSDU>\n", "deliverErroneusSDU>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_deliverErroneusSDU_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_deliverErroneusSDU_descr_ = { "@BSSGP_Types.ABQP.deliverErroneusSDU", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ABQP_deliverErroneusSDU_xer_, &BITSTRING_json_, &ABQP_deliverErroneusSDU_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_deliverErroneusSDU_default_coding("RAW");
const XERdescriptor_t       ABQP_deliveryOrder_xer_ = { {"deliveryOrder>\n", "deliveryOrder>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_deliveryOrder_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_deliveryOrder_descr_ = { "@BSSGP_Types.ABQP.deliveryOrder", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &ABQP_deliveryOrder_xer_, &BITSTRING_json_, &ABQP_deliveryOrder_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_deliveryOrder_default_coding("RAW");
const XERdescriptor_t       ABQP_trafficClass_xer_ = { {"trafficClass>\n", "trafficClass>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_trafficClass_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_trafficClass_descr_ = { "@BSSGP_Types.ABQP.trafficClass", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ABQP_trafficClass_xer_, &BITSTRING_json_, &ABQP_trafficClass_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_trafficClass_default_coding("RAW");
const XERdescriptor_t       ABQP_maxSDUSize_xer_ = { {"maxSDUSize>\n", "maxSDUSize>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ABQP_maxSDUSize_oer_ext_arr_[0] = {};
const int ABQP_maxSDUSize_oer_p_[0] = {};
const TTCN_OERdescriptor_t ABQP_maxSDUSize_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ABQP_maxSDUSize_oer_ext_arr_, 0, ABQP_maxSDUSize_oer_p_};
const TTCN_Typedescriptor_t ABQP_maxSDUSize_descr_ = { "@BSSGP_Types.ABQP.maxSDUSize", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ABQP_maxSDUSize_xer_, &OCTETSTRING_json_, &ABQP_maxSDUSize_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_maxSDUSize_default_coding("RAW");
const XERdescriptor_t       ABQP_maxBitrateUplink_xer_ = { {"maxBitrateUplink>\n", "maxBitrateUplink>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ABQP_maxBitrateUplink_oer_ext_arr_[0] = {};
const int ABQP_maxBitrateUplink_oer_p_[0] = {};
const TTCN_OERdescriptor_t ABQP_maxBitrateUplink_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ABQP_maxBitrateUplink_oer_ext_arr_, 0, ABQP_maxBitrateUplink_oer_p_};
const TTCN_Typedescriptor_t ABQP_maxBitrateUplink_descr_ = { "@BSSGP_Types.ABQP.maxBitrateUplink", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ABQP_maxBitrateUplink_xer_, &OCTETSTRING_json_, &ABQP_maxBitrateUplink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_maxBitrateUplink_default_coding("RAW");
const XERdescriptor_t       ABQP_maxBitrateDownlink_xer_ = { {"maxBitrateDownlink>\n", "maxBitrateDownlink>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ABQP_maxBitrateDownlink_oer_ext_arr_[0] = {};
const int ABQP_maxBitrateDownlink_oer_p_[0] = {};
const TTCN_OERdescriptor_t ABQP_maxBitrateDownlink_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ABQP_maxBitrateDownlink_oer_ext_arr_, 0, ABQP_maxBitrateDownlink_oer_p_};
const TTCN_Typedescriptor_t ABQP_maxBitrateDownlink_descr_ = { "@BSSGP_Types.ABQP.maxBitrateDownlink", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ABQP_maxBitrateDownlink_xer_, &OCTETSTRING_json_, &ABQP_maxBitrateDownlink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_maxBitrateDownlink_default_coding("RAW");
const XERdescriptor_t       ABQP_sduErrorRatio_xer_ = { {"sduErrorRatio>\n", "sduErrorRatio>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_sduErrorRatio_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_sduErrorRatio_descr_ = { "@BSSGP_Types.ABQP.sduErrorRatio", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &ABQP_sduErrorRatio_xer_, &BITSTRING_json_, &ABQP_sduErrorRatio_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_sduErrorRatio_default_coding("RAW");
const XERdescriptor_t       ABQP_residualBER_xer_ = { {"residualBER>\n", "residualBER>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_residualBER_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_residualBER_descr_ = { "@BSSGP_Types.ABQP.residualBER", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &ABQP_residualBER_xer_, &BITSTRING_json_, &ABQP_residualBER_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_residualBER_default_coding("RAW");
const XERdescriptor_t       ABQP_trafficHandlingPriority_xer_ = { {"trafficHandlingPriority>\n", "trafficHandlingPriority>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_trafficHandlingPriority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_trafficHandlingPriority_descr_ = { "@BSSGP_Types.ABQP.trafficHandlingPriority", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &ABQP_trafficHandlingPriority_xer_, &BITSTRING_json_, &ABQP_trafficHandlingPriority_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_trafficHandlingPriority_default_coding("RAW");
const XERdescriptor_t       ABQP_transferDelay_xer_ = { {"transferDelay>\n", "transferDelay>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_transferDelay_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_transferDelay_descr_ = { "@BSSGP_Types.ABQP.transferDelay", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &ABQP_transferDelay_xer_, &BITSTRING_json_, &ABQP_transferDelay_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_transferDelay_default_coding("RAW");
const XERdescriptor_t       ABQP_guaranteedBitRateUplink_xer_ = { {"guaranteedBitRateUplink>\n", "guaranteedBitRateUplink>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ABQP_guaranteedBitRateUplink_oer_ext_arr_[0] = {};
const int ABQP_guaranteedBitRateUplink_oer_p_[0] = {};
const TTCN_OERdescriptor_t ABQP_guaranteedBitRateUplink_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ABQP_guaranteedBitRateUplink_oer_ext_arr_, 0, ABQP_guaranteedBitRateUplink_oer_p_};
const TTCN_Typedescriptor_t ABQP_guaranteedBitRateUplink_descr_ = { "@BSSGP_Types.ABQP.guaranteedBitRateUplink", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ABQP_guaranteedBitRateUplink_xer_, &OCTETSTRING_json_, &ABQP_guaranteedBitRateUplink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_guaranteedBitRateUplink_default_coding("RAW");
const XERdescriptor_t       ABQP_guaranteedBitRateDownlink_xer_ = { {"guaranteedBitRateDownlink>\n", "guaranteedBitRateDownlink>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ABQP_guaranteedBitRateDownlink_oer_ext_arr_[0] = {};
const int ABQP_guaranteedBitRateDownlink_oer_p_[0] = {};
const TTCN_OERdescriptor_t ABQP_guaranteedBitRateDownlink_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ABQP_guaranteedBitRateDownlink_oer_ext_arr_, 0, ABQP_guaranteedBitRateDownlink_oer_p_};
const TTCN_Typedescriptor_t ABQP_guaranteedBitRateDownlink_descr_ = { "@BSSGP_Types.ABQP.guaranteedBitRateDownlink", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ABQP_guaranteedBitRateDownlink_xer_, &OCTETSTRING_json_, &ABQP_guaranteedBitRateDownlink_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_guaranteedBitRateDownlink_default_coding("RAW");
const XERdescriptor_t       ABQP_sourceStatisticsDescriptor_xer_ = { {"sourceStatisticsDescriptor>\n", "sourceStatisticsDescriptor>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_sourceStatisticsDescriptor_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_sourceStatisticsDescriptor_descr_ = { "@BSSGP_Types.ABQP.sourceStatisticsDescriptor", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &ABQP_sourceStatisticsDescriptor_xer_, &BITSTRING_json_, &ABQP_sourceStatisticsDescriptor_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_sourceStatisticsDescriptor_default_coding("RAW");
const XERdescriptor_t       ABQP_signallingIndication_xer_ = { {"signallingIndication>\n", "signallingIndication>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_signallingIndication_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_signallingIndication_descr_ = { "@BSSGP_Types.ABQP.signallingIndication", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ABQP_signallingIndication_xer_, &BITSTRING_json_, &ABQP_signallingIndication_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_signallingIndication_default_coding("RAW");
const XERdescriptor_t       ABQP_spare4_xer_ = { {"spare4>\n", "spare4>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ABQP_spare4_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ABQP_spare4_descr_ = { "@BSSGP_Types.ABQP.spare4", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ABQP_spare4_xer_, &BITSTRING_json_, &ABQP_spare4_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_spare4_default_coding("RAW");
const XERdescriptor_t       ABQP_maxBitRateDownlinkExtended_xer_ = { {"maxBitRateDownlinkExtended>\n", "maxBitRateDownlinkExtended>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ABQP_maxBitRateDownlinkExtended_oer_ext_arr_[0] = {};
const int ABQP_maxBitRateDownlinkExtended_oer_p_[0] = {};
const TTCN_OERdescriptor_t ABQP_maxBitRateDownlinkExtended_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ABQP_maxBitRateDownlinkExtended_oer_ext_arr_, 0, ABQP_maxBitRateDownlinkExtended_oer_p_};
const TTCN_Typedescriptor_t ABQP_maxBitRateDownlinkExtended_descr_ = { "@BSSGP_Types.ABQP.maxBitRateDownlinkExtended", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ABQP_maxBitRateDownlinkExtended_xer_, &OCTETSTRING_json_, &ABQP_maxBitRateDownlinkExtended_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_maxBitRateDownlinkExtended_default_coding("RAW");
const XERdescriptor_t       ABQP_guaranteedBitRateDownlinkExtended_xer_ = { {"guaranteedBitRateDownlinkExtended>\n", "guaranteedBitRateDownlinkExtended>\n"}, {35, 35}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ABQP_guaranteedBitRateDownlinkExtended_oer_ext_arr_[0] = {};
const int ABQP_guaranteedBitRateDownlinkExtended_oer_p_[0] = {};
const TTCN_OERdescriptor_t ABQP_guaranteedBitRateDownlinkExtended_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ABQP_guaranteedBitRateDownlinkExtended_oer_ext_arr_, 0, ABQP_guaranteedBitRateDownlinkExtended_oer_p_};
const TTCN_Typedescriptor_t ABQP_guaranteedBitRateDownlinkExtended_descr_ = { "@BSSGP_Types.ABQP.guaranteedBitRateDownlinkExtended", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ABQP_guaranteedBitRateDownlinkExtended_xer_, &OCTETSTRING_json_, &ABQP_guaranteedBitRateDownlinkExtended_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_guaranteedBitRateDownlinkExtended_default_coding("RAW");
const XERdescriptor_t       ABQP_maxBitrateUplinkExtended_xer_ = { {"maxBitrateUplinkExtended>\n", "maxBitrateUplinkExtended>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ABQP_maxBitrateUplinkExtended_oer_ext_arr_[0] = {};
const int ABQP_maxBitrateUplinkExtended_oer_p_[0] = {};
const TTCN_OERdescriptor_t ABQP_maxBitrateUplinkExtended_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ABQP_maxBitrateUplinkExtended_oer_ext_arr_, 0, ABQP_maxBitrateUplinkExtended_oer_p_};
const TTCN_Typedescriptor_t ABQP_maxBitrateUplinkExtended_descr_ = { "@BSSGP_Types.ABQP.maxBitrateUplinkExtended", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ABQP_maxBitrateUplinkExtended_xer_, &OCTETSTRING_json_, &ABQP_maxBitrateUplinkExtended_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_maxBitrateUplinkExtended_default_coding("RAW");
const XERdescriptor_t       ABQP_guaranteedBitRateUplinkExtended_xer_ = { {"guaranteedBitRateUplinkExtended>\n", "guaranteedBitRateUplinkExtended>\n"}, {33, 33}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ABQP_guaranteedBitRateUplinkExtended_oer_ext_arr_[0] = {};
const int ABQP_guaranteedBitRateUplinkExtended_oer_p_[0] = {};
const TTCN_OERdescriptor_t ABQP_guaranteedBitRateUplinkExtended_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ABQP_guaranteedBitRateUplinkExtended_oer_ext_arr_, 0, ABQP_guaranteedBitRateUplinkExtended_oer_p_};
const TTCN_Typedescriptor_t ABQP_guaranteedBitRateUplinkExtended_descr_ = { "@BSSGP_Types.ABQP.guaranteedBitRateUplinkExtended", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ABQP_guaranteedBitRateUplinkExtended_xer_, &OCTETSTRING_json_, &ABQP_guaranteedBitRateUplinkExtended_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ABQP_guaranteedBitRateUplinkExtended_default_coding("RAW");
UNIVERSAL_CHARSTRING ABQP_default_coding("RAW");
const XERdescriptor_t       GPRS__Timer_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int GPRS__Timer_iEI_oer_ext_arr_[0] = {};
const int GPRS__Timer_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t GPRS__Timer_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GPRS__Timer_iEI_oer_ext_arr_, 0, GPRS__Timer_iEI_oer_p_};
const TTCN_Typedescriptor_t GPRS__Timer_iEI_descr_ = { "@BSSGP_Types.GPRS_Timer.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GPRS__Timer_iEI_xer_, &OCTETSTRING_json_, &GPRS__Timer_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GPRS__Timer_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t GPRS__Timer_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GPRS__Timer_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GPRS__Timer_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GPRS__Timer_ext_descr_ = { "@BSSGP_Types.GPRS_Timer.ext", &BITSTRING_ber_, &GPRS__Timer_ext_raw_, NULL, &GPRS__Timer_ext_xer_, &BITSTRING_json_, &GPRS__Timer_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GPRS__Timer_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t GPRS__Timer_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GPRS__Timer_lengthIndicator
const TTCN_Typedescriptor_t GPRS__Timer_lengthIndicator_descr_ = { "@BSSGP_Types.GPRS_Timer.lengthIndicator", NULL, &GPRS__Timer_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GPRS__Timer_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       GPRS__Timer_timer__Value_xer_ = { {"timer_Value>\n", "timer_Value>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GPRS__Timer_timer__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GPRS__Timer_timer__Value_descr_ = { "@BSSGP_Types.GPRS_Timer.timer_Value", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &GPRS__Timer_timer__Value_xer_, &BITSTRING_json_, &GPRS__Timer_timer__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GPRS__Timer_timer__Value_default_coding("RAW");
const XERdescriptor_t       GPRS__Timer_unit__Value_xer_ = { {"unit_Value>\n", "unit_Value>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GPRS__Timer_unit__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GPRS__Timer_unit__Value_descr_ = { "@BSSGP_Types.GPRS_Timer.unit_Value", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &GPRS__Timer_unit__Value_xer_, &BITSTRING_json_, &GPRS__Timer_unit__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GPRS__Timer_unit__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t GPRS__Timer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GPRS__Timer
const TTCN_Typedescriptor_t GPRS__Timer_descr_ = { "@BSSGP_Types.GPRS_Timer", NULL, &GPRS__Timer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GPRS__Timer_default_coding("RAW");
const XERdescriptor_t       Feature__bitmap_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Feature__bitmap_iEI_oer_ext_arr_[0] = {};
const int Feature__bitmap_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Feature__bitmap_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Feature__bitmap_iEI_oer_ext_arr_, 0, Feature__bitmap_iEI_oer_p_};
const TTCN_Typedescriptor_t Feature__bitmap_iEI_descr_ = { "@BSSGP_Types.Feature_bitmap.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Feature__bitmap_iEI_xer_, &OCTETSTRING_json_, &Feature__bitmap_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Feature__bitmap_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Feature__bitmap_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Feature__bitmap_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Feature__bitmap_ext_descr_ = { "@BSSGP_Types.Feature_bitmap.ext", &BITSTRING_ber_, &Feature__bitmap_ext_raw_, NULL, &Feature__bitmap_ext_xer_, &BITSTRING_json_, &Feature__bitmap_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Feature__bitmap_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Feature__bitmap_lengthIndicator
const TTCN_Typedescriptor_t Feature__bitmap_lengthIndicator_descr_ = { "@BSSGP_Types.Feature_bitmap.lengthIndicator", NULL, &Feature__bitmap_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Feature__bitmap_pFC_xer_ = { {"pFC>\n", "pFC>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Feature__bitmap_pFC_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Feature__bitmap_pFC_descr_ = { "@BSSGP_Types.Feature_bitmap.pFC", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Feature__bitmap_pFC_xer_, &BITSTRING_json_, &Feature__bitmap_pFC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_pFC_default_coding("RAW");
const XERdescriptor_t       Feature__bitmap_cBL_xer_ = { {"cBL>\n", "cBL>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Feature__bitmap_cBL_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Feature__bitmap_cBL_descr_ = { "@BSSGP_Types.Feature_bitmap.cBL", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Feature__bitmap_cBL_xer_, &BITSTRING_json_, &Feature__bitmap_cBL_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_cBL_default_coding("RAW");
const XERdescriptor_t       Feature__bitmap_iNR_xer_ = { {"iNR>\n", "iNR>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Feature__bitmap_iNR_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Feature__bitmap_iNR_descr_ = { "@BSSGP_Types.Feature_bitmap.iNR", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Feature__bitmap_iNR_xer_, &BITSTRING_json_, &Feature__bitmap_iNR_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_iNR_default_coding("RAW");
const XERdescriptor_t       Feature__bitmap_lCS_xer_ = { {"lCS>\n", "lCS>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Feature__bitmap_lCS_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Feature__bitmap_lCS_descr_ = { "@BSSGP_Types.Feature_bitmap.lCS", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Feature__bitmap_lCS_xer_, &BITSTRING_json_, &Feature__bitmap_lCS_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_lCS_default_coding("RAW");
const XERdescriptor_t       Feature__bitmap_rIM_xer_ = { {"rIM>\n", "rIM>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Feature__bitmap_rIM_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Feature__bitmap_rIM_descr_ = { "@BSSGP_Types.Feature_bitmap.rIM", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Feature__bitmap_rIM_xer_, &BITSTRING_json_, &Feature__bitmap_rIM_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_rIM_default_coding("RAW");
const XERdescriptor_t       Feature__bitmap_pFC__FC_xer_ = { {"pFC_FC>\n", "pFC_FC>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Feature__bitmap_pFC__FC_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Feature__bitmap_pFC__FC_descr_ = { "@BSSGP_Types.Feature_bitmap.pFC_FC", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Feature__bitmap_pFC__FC_xer_, &BITSTRING_json_, &Feature__bitmap_pFC__FC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_pFC__FC_default_coding("RAW");
const XERdescriptor_t       Feature__bitmap_enhancedRadioStatus_xer_ = { {"enhancedRadioStatus>\n", "enhancedRadioStatus>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Feature__bitmap_enhancedRadioStatus_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Feature__bitmap_enhancedRadioStatus_descr_ = { "@BSSGP_Types.Feature_bitmap.enhancedRadioStatus", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Feature__bitmap_enhancedRadioStatus_xer_, &BITSTRING_json_, &Feature__bitmap_enhancedRadioStatus_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_enhancedRadioStatus_default_coding("RAW");
const XERdescriptor_t       Feature__bitmap_mBMS_xer_ = { {"mBMS>\n", "mBMS>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Feature__bitmap_mBMS_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Feature__bitmap_mBMS_descr_ = { "@BSSGP_Types.Feature_bitmap.mBMS", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Feature__bitmap_mBMS_xer_, &BITSTRING_json_, &Feature__bitmap_mBMS_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_mBMS_default_coding("RAW");
const TTCN_RAWdescriptor_t Feature__bitmap_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Feature__bitmap
const TTCN_Typedescriptor_t Feature__bitmap_descr_ = { "@BSSGP_Types.Feature_bitmap", NULL, &Feature__bitmap_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Feature__bitmap_default_coding("RAW");
const XERdescriptor_t       Bucket__Full__Ratio_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Bucket__Full__Ratio_iEI_oer_ext_arr_[0] = {};
const int Bucket__Full__Ratio_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Bucket__Full__Ratio_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Bucket__Full__Ratio_iEI_oer_ext_arr_, 0, Bucket__Full__Ratio_iEI_oer_p_};
const TTCN_Typedescriptor_t Bucket__Full__Ratio_iEI_descr_ = { "@BSSGP_Types.Bucket_Full_Ratio.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Bucket__Full__Ratio_iEI_xer_, &OCTETSTRING_json_, &Bucket__Full__Ratio_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bucket__Full__Ratio_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Bucket__Full__Ratio_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Bucket__Full__Ratio_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Bucket__Full__Ratio_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Bucket__Full__Ratio_ext_descr_ = { "@BSSGP_Types.Bucket_Full_Ratio.ext", &BITSTRING_ber_, &Bucket__Full__Ratio_ext_raw_, NULL, &Bucket__Full__Ratio_ext_xer_, &BITSTRING_json_, &Bucket__Full__Ratio_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bucket__Full__Ratio_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Bucket__Full__Ratio_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Bucket__Full__Ratio_lengthIndicator
const TTCN_Typedescriptor_t Bucket__Full__Ratio_lengthIndicator_descr_ = { "@BSSGP_Types.Bucket_Full_Ratio.lengthIndicator", NULL, &Bucket__Full__Ratio_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bucket__Full__Ratio_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Bucket__Full__Ratio_rate__of__the__Bucket_xer_ = { {"rate_of_the_Bucket>\n", "rate_of_the_Bucket>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Bucket__Full__Ratio_rate__of__the__Bucket_oer_ext_arr_[0] = {};
const int Bucket__Full__Ratio_rate__of__the__Bucket_oer_p_[0] = {};
const TTCN_OERdescriptor_t Bucket__Full__Ratio_rate__of__the__Bucket_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Bucket__Full__Ratio_rate__of__the__Bucket_oer_ext_arr_, 0, Bucket__Full__Ratio_rate__of__the__Bucket_oer_p_};
const TTCN_Typedescriptor_t Bucket__Full__Ratio_rate__of__the__Bucket_descr_ = { "@BSSGP_Types.Bucket_Full_Ratio.rate_of_the_Bucket", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Bucket__Full__Ratio_rate__of__the__Bucket_xer_, &OCTETSTRING_json_, &Bucket__Full__Ratio_rate__of__the__Bucket_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bucket__Full__Ratio_rate__of__the__Bucket_default_coding("RAW");
const TTCN_RAWdescriptor_t Bucket__Full__Ratio_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Bucket__Full__Ratio
const TTCN_Typedescriptor_t Bucket__Full__Ratio_descr_ = { "@BSSGP_Types.Bucket_Full_Ratio", NULL, &Bucket__Full__Ratio_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Bucket__Full__Ratio_default_coding("RAW");
const XERdescriptor_t       Service__UTRAN__CCO_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Service__UTRAN__CCO_iEI_oer_ext_arr_[0] = {};
const int Service__UTRAN__CCO_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Service__UTRAN__CCO_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Service__UTRAN__CCO_iEI_oer_ext_arr_, 0, Service__UTRAN__CCO_iEI_oer_p_};
const TTCN_Typedescriptor_t Service__UTRAN__CCO_iEI_descr_ = { "@BSSGP_Types.Service_UTRAN_CCO.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Service__UTRAN__CCO_iEI_xer_, &OCTETSTRING_json_, &Service__UTRAN__CCO_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__UTRAN__CCO_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Service__UTRAN__CCO_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Service__UTRAN__CCO_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Service__UTRAN__CCO_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Service__UTRAN__CCO_ext_descr_ = { "@BSSGP_Types.Service_UTRAN_CCO.ext", &BITSTRING_ber_, &Service__UTRAN__CCO_ext_raw_, NULL, &Service__UTRAN__CCO_ext_xer_, &BITSTRING_json_, &Service__UTRAN__CCO_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__UTRAN__CCO_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Service__UTRAN__CCO_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Service__UTRAN__CCO_lengthIndicator
const TTCN_Typedescriptor_t Service__UTRAN__CCO_lengthIndicator_descr_ = { "@BSSGP_Types.Service_UTRAN_CCO.lengthIndicator", NULL, &Service__UTRAN__CCO_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__UTRAN__CCO_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Service__UTRAN__CCO_service__UTRAN__CCO__Value_xer_ = { {"service_UTRAN_CCO_Value>\n", "service_UTRAN_CCO_Value>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Service__UTRAN__CCO_service__UTRAN__CCO__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Service__UTRAN__CCO_service__UTRAN__CCO__Value_descr_ = { "@BSSGP_Types.Service_UTRAN_CCO.service_UTRAN_CCO_Value", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &Service__UTRAN__CCO_service__UTRAN__CCO__Value_xer_, &BITSTRING_json_, &Service__UTRAN__CCO_service__UTRAN__CCO__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__UTRAN__CCO_service__UTRAN__CCO__Value_default_coding("RAW");
const XERdescriptor_t       Service__UTRAN__CCO_service__E__UTRAN__CCO__Value_xer_ = { {"service_E_UTRAN_CCO_Value>\n", "service_E_UTRAN_CCO_Value>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Service__UTRAN__CCO_service__E__UTRAN__CCO__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Service__UTRAN__CCO_service__E__UTRAN__CCO__Value_descr_ = { "@BSSGP_Types.Service_UTRAN_CCO.service_E_UTRAN_CCO_Value", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &Service__UTRAN__CCO_service__E__UTRAN__CCO__Value_xer_, &BITSTRING_json_, &Service__UTRAN__CCO_service__E__UTRAN__CCO__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__UTRAN__CCO_service__E__UTRAN__CCO__Value_default_coding("RAW");
const XERdescriptor_t       Service__UTRAN__CCO_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Service__UTRAN__CCO_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Service__UTRAN__CCO_spare_descr_ = { "@BSSGP_Types.Service_UTRAN_CCO.spare", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &Service__UTRAN__CCO_spare_xer_, &BITSTRING_json_, &Service__UTRAN__CCO_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__UTRAN__CCO_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Service__UTRAN__CCO_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Service__UTRAN__CCO
const TTCN_Typedescriptor_t Service__UTRAN__CCO_descr_ = { "@BSSGP_Types.Service_UTRAN_CCO", NULL, &Service__UTRAN__CCO_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__UTRAN__CCO_default_coding("RAW");
const XERdescriptor_t       Service__Class__Indicator_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Service__Class__Indicator_iEI_oer_ext_arr_[0] = {};
const int Service__Class__Indicator_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Service__Class__Indicator_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Service__Class__Indicator_iEI_oer_ext_arr_, 0, Service__Class__Indicator_iEI_oer_p_};
const TTCN_Typedescriptor_t Service__Class__Indicator_iEI_descr_ = { "@BSSGP_Types.Service_Class_Indicator.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Service__Class__Indicator_iEI_xer_, &OCTETSTRING_json_, &Service__Class__Indicator_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__Class__Indicator_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Service__Class__Indicator_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Service__Class__Indicator_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Service__Class__Indicator_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Service__Class__Indicator_ext_descr_ = { "@BSSGP_Types.Service_Class_Indicator.ext", &BITSTRING_ber_, &Service__Class__Indicator_ext_raw_, NULL, &Service__Class__Indicator_ext_xer_, &BITSTRING_json_, &Service__Class__Indicator_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__Class__Indicator_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Service__Class__Indicator_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Service__Class__Indicator_lengthIndicator
const TTCN_Typedescriptor_t Service__Class__Indicator_lengthIndicator_descr_ = { "@BSSGP_Types.Service_Class_Indicator.lengthIndicator", NULL, &Service__Class__Indicator_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__Class__Indicator_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Service__Class__Indicator_serviceClassIndicator_xer_ = { {"serviceClassIndicator>\n", "serviceClassIndicator>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Service__Class__Indicator_serviceClassIndicator_oer_ext_arr_[0] = {};
const int Service__Class__Indicator_serviceClassIndicator_oer_p_[0] = {};
const TTCN_OERdescriptor_t Service__Class__Indicator_serviceClassIndicator_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Service__Class__Indicator_serviceClassIndicator_oer_ext_arr_, 0, Service__Class__Indicator_serviceClassIndicator_oer_p_};
const TTCN_Typedescriptor_t Service__Class__Indicator_serviceClassIndicator_descr_ = { "@BSSGP_Types.Service_Class_Indicator.serviceClassIndicator", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Service__Class__Indicator_serviceClassIndicator_xer_, &OCTETSTRING_json_, &Service__Class__Indicator_serviceClassIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__Class__Indicator_serviceClassIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t Service__Class__Indicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Service__Class__Indicator
const TTCN_Typedescriptor_t Service__Class__Indicator_descr_ = { "@BSSGP_Types.Service_Class_Indicator", NULL, &Service__Class__Indicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Service__Class__Indicator_default_coding("RAW");
const XERdescriptor_t       NSEI__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int NSEI__BSSGP_iEI_oer_ext_arr_[0] = {};
const int NSEI__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t NSEI__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, NSEI__BSSGP_iEI_oer_ext_arr_, 0, NSEI__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t NSEI__BSSGP_iEI_descr_ = { "@BSSGP_Types.NSEI_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &NSEI__BSSGP_iEI_xer_, &OCTETSTRING_json_, &NSEI__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NSEI__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t NSEI__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       NSEI__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NSEI__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NSEI__BSSGP_ext_descr_ = { "@BSSGP_Types.NSEI_BSSGP.ext", &BITSTRING_ber_, &NSEI__BSSGP_ext_raw_, NULL, &NSEI__BSSGP_ext_xer_, &BITSTRING_json_, &NSEI__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NSEI__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t NSEI__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for NSEI__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t NSEI__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.NSEI_BSSGP.lengthIndicator", NULL, &NSEI__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NSEI__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       NSEI__BSSGP_nSEI_xer_ = { {"nSEI>\n", "nSEI>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int NSEI__BSSGP_nSEI_oer_ext_arr_[0] = {};
const int NSEI__BSSGP_nSEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t NSEI__BSSGP_nSEI_oer_ = { -1, TRUE, 2, FALSE, 0, 0, NSEI__BSSGP_nSEI_oer_ext_arr_, 0, NSEI__BSSGP_nSEI_oer_p_};
const TTCN_Typedescriptor_t NSEI__BSSGP_nSEI_descr_ = { "@BSSGP_Types.NSEI_BSSGP.nSEI", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &NSEI__BSSGP_nSEI_xer_, &OCTETSTRING_json_, &NSEI__BSSGP_nSEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NSEI__BSSGP_nSEI_default_coding("RAW");
const TTCN_RAWdescriptor_t NSEI__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for NSEI__BSSGP
const TTCN_Typedescriptor_t NSEI__BSSGP_descr_ = { "@BSSGP_Types.NSEI_BSSGP", NULL, &NSEI__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NSEI__BSSGP_default_coding("RAW");
const XERdescriptor_t       RRLP__APDU__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RRLP__APDU__BSSGP_iEI_oer_ext_arr_[0] = {};
const int RRLP__APDU__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RRLP__APDU__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RRLP__APDU__BSSGP_iEI_oer_ext_arr_, 0, RRLP__APDU__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t RRLP__APDU__BSSGP_iEI_descr_ = { "@BSSGP_Types.RRLP_APDU_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RRLP__APDU__BSSGP_iEI_xer_, &OCTETSTRING_json_, &RRLP__APDU__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__APDU__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RRLP__APDU__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RRLP__APDU__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RRLP__APDU__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RRLP__APDU__BSSGP_ext_descr_ = { "@BSSGP_Types.RRLP_APDU_BSSGP.ext", &BITSTRING_ber_, &RRLP__APDU__BSSGP_ext_raw_, NULL, &RRLP__APDU__BSSGP_ext_xer_, &BITSTRING_json_, &RRLP__APDU__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__APDU__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RRLP__APDU__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RRLP__APDU__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t RRLP__APDU__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.RRLP_APDU_BSSGP.lengthIndicator", NULL, &RRLP__APDU__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__APDU__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       RRLP__APDU__BSSGP_rRLP__Message_xer_ = { {"rRLP_Message>\n", "rRLP_Message>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RRLP__APDU__BSSGP_rRLP__Message_oer_ext_arr_[0] = {};
const int RRLP__APDU__BSSGP_rRLP__Message_oer_p_[0] = {};
const TTCN_OERdescriptor_t RRLP__APDU__BSSGP_rRLP__Message_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RRLP__APDU__BSSGP_rRLP__Message_oer_ext_arr_, 0, RRLP__APDU__BSSGP_rRLP__Message_oer_p_};
const TTCN_Typedescriptor_t RRLP__APDU__BSSGP_rRLP__Message_descr_ = { "@BSSGP_Types.RRLP_APDU_BSSGP.rRLP_Message", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RRLP__APDU__BSSGP_rRLP__Message_xer_, &OCTETSTRING_json_, &RRLP__APDU__BSSGP_rRLP__Message_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__APDU__BSSGP_rRLP__Message_default_coding("RAW");
const TTCN_RAWdescriptor_t RRLP__APDU__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RRLP__APDU__BSSGP
const TTCN_Typedescriptor_t RRLP__APDU__BSSGP_descr_ = { "@BSSGP_Types.RRLP_APDU_BSSGP", NULL, &RRLP__APDU__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__APDU__BSSGP_default_coding("RAW");
const XERdescriptor_t       LCS__QoS__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LCS__QoS__BSSGP_iEI_oer_ext_arr_[0] = {};
const int LCS__QoS__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LCS__QoS__BSSGP_iEI_oer_ext_arr_, 0, LCS__QoS__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_iEI_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LCS__QoS__BSSGP_iEI_xer_, &OCTETSTRING_json_, &LCS__QoS__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__QoS__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LCS__QoS__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_ext_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.ext", &BITSTRING_ber_, &LCS__QoS__BSSGP_ext_raw_, NULL, &LCS__QoS__BSSGP_ext_xer_, &BITSTRING_json_, &LCS__QoS__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__QoS__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LCS__QoS__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.lengthIndicator", NULL, &LCS__QoS__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       LCS__QoS__BSSGP_vert_xer_ = { {"vert>\n", "vert>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_vert_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_vert_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.vert", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LCS__QoS__BSSGP_vert_xer_, &BITSTRING_json_, &LCS__QoS__BSSGP_vert_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_vert_default_coding("RAW");
const XERdescriptor_t       LCS__QoS__BSSGP_vel_xer_ = { {"vel>\n", "vel>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_vel_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_vel_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.vel", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LCS__QoS__BSSGP_vel_xer_, &BITSTRING_json_, &LCS__QoS__BSSGP_vel_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_vel_default_coding("RAW");
const XERdescriptor_t       LCS__QoS__BSSGP_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_spare1_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.spare1", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &LCS__QoS__BSSGP_spare1_xer_, &BITSTRING_json_, &LCS__QoS__BSSGP_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_spare1_default_coding("RAW");
const XERdescriptor_t       LCS__QoS__BSSGP_horizontal__Accuracy_xer_ = { {"horizontal_Accuracy>\n", "horizontal_Accuracy>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_horizontal__Accuracy_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_horizontal__Accuracy_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.horizontal_Accuracy", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &LCS__QoS__BSSGP_horizontal__Accuracy_xer_, &BITSTRING_json_, &LCS__QoS__BSSGP_horizontal__Accuracy_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_horizontal__Accuracy_default_coding("RAW");
const XERdescriptor_t       LCS__QoS__BSSGP_hA__Indicator_xer_ = { {"hA_Indicator>\n", "hA_Indicator>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_hA__Indicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_hA__Indicator_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.hA_Indicator", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LCS__QoS__BSSGP_hA__Indicator_xer_, &BITSTRING_json_, &LCS__QoS__BSSGP_hA__Indicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_hA__Indicator_default_coding("RAW");
const XERdescriptor_t       LCS__QoS__BSSGP_vertical__Accuracy_xer_ = { {"vertical_Accuracy>\n", "vertical_Accuracy>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_vertical__Accuracy_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_vertical__Accuracy_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.vertical_Accuracy", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &LCS__QoS__BSSGP_vertical__Accuracy_xer_, &BITSTRING_json_, &LCS__QoS__BSSGP_vertical__Accuracy_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_vertical__Accuracy_default_coding("RAW");
const XERdescriptor_t       LCS__QoS__BSSGP_vA__Indicator_xer_ = { {"vA_Indicator>\n", "vA_Indicator>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_vA__Indicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_vA__Indicator_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.vA_Indicator", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LCS__QoS__BSSGP_vA__Indicator_xer_, &BITSTRING_json_, &LCS__QoS__BSSGP_vA__Indicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_vA__Indicator_default_coding("RAW");
const XERdescriptor_t       LCS__QoS__BSSGP_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_spare2_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.spare2", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &LCS__QoS__BSSGP_spare2_xer_, &BITSTRING_json_, &LCS__QoS__BSSGP_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_spare2_default_coding("RAW");
const XERdescriptor_t       LCS__QoS__BSSGP_response__Time__Category_xer_ = { {"response_Time_Category>\n", "response_Time_Category>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__QoS__BSSGP_response__Time__Category_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_response__Time__Category_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP.response_Time_Category", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &LCS__QoS__BSSGP_response__Time__Category_xer_, &BITSTRING_json_, &LCS__QoS__BSSGP_response__Time__Category_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_response__Time__Category_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__QoS__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LCS__QoS__BSSGP
const TTCN_Typedescriptor_t LCS__QoS__BSSGP_descr_ = { "@BSSGP_Types.LCS_QoS_BSSGP", NULL, &LCS__QoS__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__QoS__BSSGP_default_coding("RAW");
const XERdescriptor_t       LCS__Client__Type__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LCS__Client__Type__BSSGP_iEI_oer_ext_arr_[0] = {};
const int LCS__Client__Type__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t LCS__Client__Type__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LCS__Client__Type__BSSGP_iEI_oer_ext_arr_, 0, LCS__Client__Type__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t LCS__Client__Type__BSSGP_iEI_descr_ = { "@BSSGP_Types.LCS_Client_Type_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LCS__Client__Type__BSSGP_iEI_xer_, &OCTETSTRING_json_, &LCS__Client__Type__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Client__Type__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Client__Type__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LCS__Client__Type__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Client__Type__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Client__Type__BSSGP_ext_descr_ = { "@BSSGP_Types.LCS_Client_Type_BSSGP.ext", &BITSTRING_ber_, &LCS__Client__Type__BSSGP_ext_raw_, NULL, &LCS__Client__Type__BSSGP_ext_xer_, &BITSTRING_json_, &LCS__Client__Type__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Client__Type__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Client__Type__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LCS__Client__Type__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t LCS__Client__Type__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.LCS_Client_Type_BSSGP.lengthIndicator", NULL, &LCS__Client__Type__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Client__Type__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       LCS__Client__Type__BSSGP_client__Subtype_xer_ = { {"client_Subtype>\n", "client_Subtype>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Client__Type__BSSGP_client__Subtype_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Client__Type__BSSGP_client__Subtype_descr_ = { "@BSSGP_Types.LCS_Client_Type_BSSGP.client_Subtype", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &LCS__Client__Type__BSSGP_client__Subtype_xer_, &BITSTRING_json_, &LCS__Client__Type__BSSGP_client__Subtype_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Client__Type__BSSGP_client__Subtype_default_coding("RAW");
const XERdescriptor_t       LCS__Client__Type__BSSGP_client__Category_xer_ = { {"client_Category>\n", "client_Category>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Client__Type__BSSGP_client__Category_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Client__Type__BSSGP_client__Category_descr_ = { "@BSSGP_Types.LCS_Client_Type_BSSGP.client_Category", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &LCS__Client__Type__BSSGP_client__Category_xer_, &BITSTRING_json_, &LCS__Client__Type__BSSGP_client__Category_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Client__Type__BSSGP_client__Category_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Client__Type__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LCS__Client__Type__BSSGP
const TTCN_Typedescriptor_t LCS__Client__Type__BSSGP_descr_ = { "@BSSGP_Types.LCS_Client_Type_BSSGP", NULL, &LCS__Client__Type__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Client__Type__BSSGP_default_coding("RAW");
const XERdescriptor_t       Requested__GPS__Assistance__Data__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Requested__GPS__Assistance__Data__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Requested__GPS__Assistance__Data__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Requested__GPS__Assistance__Data__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Requested__GPS__Assistance__Data__BSSGP_iEI_oer_ext_arr_, 0, Requested__GPS__Assistance__Data__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Requested__GPS__Assistance__Data__BSSGP_iEI_descr_ = { "@BSSGP_Types.Requested_GPS_Assistance_Data_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Requested__GPS__Assistance__Data__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Requested__GPS__Assistance__Data__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GPS__Assistance__Data__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Requested__GPS__Assistance__Data__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Requested__GPS__Assistance__Data__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Requested__GPS__Assistance__Data__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Requested__GPS__Assistance__Data__BSSGP_ext_descr_ = { "@BSSGP_Types.Requested_GPS_Assistance_Data_BSSGP.ext", &BITSTRING_ber_, &Requested__GPS__Assistance__Data__BSSGP_ext_raw_, NULL, &Requested__GPS__Assistance__Data__BSSGP_ext_xer_, &BITSTRING_json_, &Requested__GPS__Assistance__Data__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GPS__Assistance__Data__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Requested__GPS__Assistance__Data__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Requested__GPS__Assistance__Data__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Requested__GPS__Assistance__Data__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Requested_GPS_Assistance_Data_BSSGP.lengthIndicator", NULL, &Requested__GPS__Assistance__Data__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GPS__Assistance__Data__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Requested__GPS__Assistance__Data__Value_bits__H__to__A_xer_ = { {"bits_H_to_A>\n", "bits_H_to_A>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Requested__GPS__Assistance__Data__Value_bits__H__to__A_oer_ext_arr_[0] = {};
const int Requested__GPS__Assistance__Data__Value_bits__H__to__A_oer_p_[0] = {};
const TTCN_OERdescriptor_t Requested__GPS__Assistance__Data__Value_bits__H__to__A_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Requested__GPS__Assistance__Data__Value_bits__H__to__A_oer_ext_arr_, 0, Requested__GPS__Assistance__Data__Value_bits__H__to__A_oer_p_};
const TTCN_Typedescriptor_t Requested__GPS__Assistance__Data__Value_bits__H__to__A_descr_ = { "@BSSGP_Types.Requested_GPS_Assistance_Data_Value.bits_H_to_A", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Requested__GPS__Assistance__Data__Value_bits__H__to__A_xer_, &OCTETSTRING_json_, &Requested__GPS__Assistance__Data__Value_bits__H__to__A_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GPS__Assistance__Data__Value_bits__H__to__A_default_coding("RAW");
const XERdescriptor_t       Requested__GPS__Assistance__Data__Value_bits__P__to__I_xer_ = { {"bits_P_to_I>\n", "bits_P_to_I>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Requested__GPS__Assistance__Data__Value_bits__P__to__I_oer_ext_arr_[0] = {};
const int Requested__GPS__Assistance__Data__Value_bits__P__to__I_oer_p_[0] = {};
const TTCN_OERdescriptor_t Requested__GPS__Assistance__Data__Value_bits__P__to__I_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Requested__GPS__Assistance__Data__Value_bits__P__to__I_oer_ext_arr_, 0, Requested__GPS__Assistance__Data__Value_bits__P__to__I_oer_p_};
const TTCN_Typedescriptor_t Requested__GPS__Assistance__Data__Value_bits__P__to__I_descr_ = { "@BSSGP_Types.Requested_GPS_Assistance_Data_Value.bits_P_to_I", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Requested__GPS__Assistance__Data__Value_bits__P__to__I_xer_, &OCTETSTRING_json_, &Requested__GPS__Assistance__Data__Value_bits__P__to__I_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GPS__Assistance__Data__Value_bits__P__to__I_default_coding("RAW");
const XERdescriptor_t       SatelliteRelatedData_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SatelliteRelatedData_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SatelliteRelatedData_spare_descr_ = { "@BSSGP_Types.SatelliteRelatedData.spare", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &SatelliteRelatedData_spare_xer_, &BITSTRING_json_, &SatelliteRelatedData_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SatelliteRelatedData_spare_default_coding("RAW");
const XERdescriptor_t       SatelliteRelatedData_gPS__Week_xer_ = { {"gPS_Week>\n", "gPS_Week>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t SatelliteRelatedData_gPS__Week_descr_ = { "@BSSGP_Types.SatelliteRelatedData.gPS_Week", &BITSTRING_ber_, &General__Types::BIT10_raw_, NULL, &SatelliteRelatedData_gPS__Week_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SatelliteRelatedData_gPS__Week_default_coding("RAW");
const XERdescriptor_t       SatelliteRelatedData_gPS__Toe_xer_ = { {"gPS_Toe>\n", "gPS_Toe>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SatelliteRelatedData_gPS__Toe_oer_ext_arr_[0] = {};
const int SatelliteRelatedData_gPS__Toe_oer_p_[0] = {};
const TTCN_OERdescriptor_t SatelliteRelatedData_gPS__Toe_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SatelliteRelatedData_gPS__Toe_oer_ext_arr_, 0, SatelliteRelatedData_gPS__Toe_oer_p_};
const TTCN_Typedescriptor_t SatelliteRelatedData_gPS__Toe_descr_ = { "@BSSGP_Types.SatelliteRelatedData.gPS_Toe", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SatelliteRelatedData_gPS__Toe_xer_, &OCTETSTRING_json_, &SatelliteRelatedData_gPS__Toe_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SatelliteRelatedData_gPS__Toe_default_coding("RAW");
const XERdescriptor_t       SatelliteRelatedData_t__Toe__Limit_xer_ = { {"t_Toe_Limit>\n", "t_Toe_Limit>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SatelliteRelatedData_t__Toe__Limit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SatelliteRelatedData_t__Toe__Limit_descr_ = { "@BSSGP_Types.SatelliteRelatedData.t_Toe_Limit", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &SatelliteRelatedData_t__Toe__Limit_xer_, &BITSTRING_json_, &SatelliteRelatedData_t__Toe__Limit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SatelliteRelatedData_t__Toe__Limit_default_coding("RAW");
const TTCN_RAWdescriptor_t SatelliteRelatedData_nSAT_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       SatelliteRelatedData_nSAT_xer_ = { {"nSAT>\n", "nSAT>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t SatelliteRelatedData_nSAT_descr_ = { "@BSSGP_Types.SatelliteRelatedData.nSAT", &INTEGER_ber_, &SatelliteRelatedData_nSAT_raw_, &INTEGER_text_, &SatelliteRelatedData_nSAT_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SatelliteRelatedData_nSAT_default_coding("RAW");
const TTCN_RAWdescriptor_t SatID__and__IODE__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SatID__and__IODE__List
const TTCN_Typedescriptor_t SatID__and__IODE__List_descr_ = { "@BSSGP_Types.SatID_and_IODE_List", NULL, &SatID__and__IODE__List_raw_, NULL, NULL, NULL, NULL, NULL, &SatID__and__IODE_descr_, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       SatID__and__IODE_satID_xer_ = { {"satID>\n", "satID>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SatID__and__IODE_satID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SatID__and__IODE_satID_descr_ = { "@BSSGP_Types.SatID_and_IODE.satID", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &SatID__and__IODE_satID_xer_, &BITSTRING_json_, &SatID__and__IODE_satID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SatID__and__IODE_satID_default_coding("RAW");
const XERdescriptor_t       SatID__and__IODE_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SatID__and__IODE_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SatID__and__IODE_spare_descr_ = { "@BSSGP_Types.SatID_and_IODE.spare", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &SatID__and__IODE_spare_xer_, &BITSTRING_json_, &SatID__and__IODE_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SatID__and__IODE_spare_default_coding("RAW");
const XERdescriptor_t       SatID__and__IODE_iODE_xer_ = { {"iODE>\n", "iODE>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SatID__and__IODE_iODE_oer_ext_arr_[0] = {};
const int SatID__and__IODE_iODE_oer_p_[0] = {};
const TTCN_OERdescriptor_t SatID__and__IODE_iODE_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SatID__and__IODE_iODE_oer_ext_arr_, 0, SatID__and__IODE_iODE_oer_p_};
const TTCN_Typedescriptor_t SatID__and__IODE_iODE_descr_ = { "@BSSGP_Types.SatID_and_IODE.iODE", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SatID__and__IODE_iODE_xer_, &OCTETSTRING_json_, &SatID__and__IODE_iODE_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SatID__and__IODE_iODE_default_coding("RAW");
const TTCN_RAWdescriptor_t SatID__and__IODE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SatID__and__IODE
const TTCN_Typedescriptor_t SatID__and__IODE_descr_ = { "@BSSGP_Types.SatID_and_IODE", NULL, &SatID__and__IODE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SatID__and__IODE_default_coding("RAW");
UNIVERSAL_CHARSTRING SatID__and__IODE__List_0_default_coding("RAW");
UNIVERSAL_CHARSTRING SatID__and__IODE__List_default_coding("RAW");
UNIVERSAL_CHARSTRING SatelliteRelatedData_satID__and__IODE__List_default_coding("RAW");
const TTCN_RAWdescriptor_t SatelliteRelatedData_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SatelliteRelatedData
const TTCN_Typedescriptor_t SatelliteRelatedData_descr_ = { "@BSSGP_Types.SatelliteRelatedData", NULL, &SatelliteRelatedData_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SatelliteRelatedData_default_coding("RAW");
UNIVERSAL_CHARSTRING Requested__GPS__Assistance__Data__Value_satelliteRelatedData_default_coding("RAW");
const TTCN_RAWdescriptor_t Requested__GPS__Assistance__Data__Value_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Requested__GPS__Assistance__Data__Value
const TTCN_Typedescriptor_t Requested__GPS__Assistance__Data__Value_descr_ = { "@BSSGP_Types.Requested_GPS_Assistance_Data_Value", NULL, &Requested__GPS__Assistance__Data__Value_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GPS__Assistance__Data__Value_default_coding("RAW");
UNIVERSAL_CHARSTRING Requested__GPS__Assistance__Data__BSSGP_requested__GPS__Assistance__Data_default_coding("RAW");
const TTCN_RAWdescriptor_t Requested__GPS__Assistance__Data__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Requested__GPS__Assistance__Data__BSSGP
const TTCN_Typedescriptor_t Requested__GPS__Assistance__Data__BSSGP_descr_ = { "@BSSGP_Types.Requested_GPS_Assistance_Data_BSSGP", NULL, &Requested__GPS__Assistance__Data__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GPS__Assistance__Data__BSSGP_default_coding("RAW");
const XERdescriptor_t       Location__Type__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Location__Type__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Location__Type__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Location__Type__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Location__Type__BSSGP_iEI_oer_ext_arr_, 0, Location__Type__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Location__Type__BSSGP_iEI_descr_ = { "@BSSGP_Types.Location_Type_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Location__Type__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Location__Type__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Type__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Location__Type__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Location__Type__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Location__Type__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Location__Type__BSSGP_ext_descr_ = { "@BSSGP_Types.Location_Type_BSSGP.ext", &BITSTRING_ber_, &Location__Type__BSSGP_ext_raw_, NULL, &Location__Type__BSSGP_ext_xer_, &BITSTRING_json_, &Location__Type__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Type__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Location__Type__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Location__Type__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Location__Type__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Location_Type_BSSGP.lengthIndicator", NULL, &Location__Type__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Type__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Location__Type__BSSGP_location__Information_xer_ = { {"location_Information>\n", "location_Information>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Location__Type__BSSGP_location__Information_oer_ext_arr_[0] = {};
const int Location__Type__BSSGP_location__Information_oer_p_[0] = {};
const TTCN_OERdescriptor_t Location__Type__BSSGP_location__Information_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Location__Type__BSSGP_location__Information_oer_ext_arr_, 0, Location__Type__BSSGP_location__Information_oer_p_};
const TTCN_Typedescriptor_t Location__Type__BSSGP_location__Information_descr_ = { "@BSSGP_Types.Location_Type_BSSGP.location_Information", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Location__Type__BSSGP_location__Information_xer_, &OCTETSTRING_json_, &Location__Type__BSSGP_location__Information_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Type__BSSGP_location__Information_default_coding("RAW");
const TTCN_RAWdescriptor_t Location__Type__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Location__Type__BSSGP
const TTCN_Typedescriptor_t Location__Type__BSSGP_descr_ = { "@BSSGP_Types.Location_Type_BSSGP", NULL, &Location__Type__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       Location__Type__BSSGP_positioning__Method_xer_ = { {"positioning_Method>\n", "positioning_Method>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Location__Type__BSSGP_positioning__Method_oer_ext_arr_[0] = {};
const int Location__Type__BSSGP_positioning__Method_oer_p_[0] = {};
const TTCN_OERdescriptor_t Location__Type__BSSGP_positioning__Method_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Location__Type__BSSGP_positioning__Method_oer_ext_arr_, 0, Location__Type__BSSGP_positioning__Method_oer_p_};
const TTCN_Typedescriptor_t Location__Type__BSSGP_positioning__Method_descr_ = { "@BSSGP_Types.Location_Type_BSSGP.positioning_Method", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Location__Type__BSSGP_positioning__Method_xer_, &OCTETSTRING_json_, &Location__Type__BSSGP_positioning__Method_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Type__BSSGP_positioning__Method_default_coding("RAW");
UNIVERSAL_CHARSTRING Location__Type__BSSGP_default_coding("RAW");
const XERdescriptor_t       Location__Estimate__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Location__Estimate__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Location__Estimate__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Location__Estimate__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Location__Estimate__BSSGP_iEI_oer_ext_arr_, 0, Location__Estimate__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Location__Estimate__BSSGP_iEI_descr_ = { "@BSSGP_Types.Location_Estimate_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Location__Estimate__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Location__Estimate__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Estimate__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Location__Estimate__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Location__Estimate__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Location__Estimate__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Location__Estimate__BSSGP_ext_descr_ = { "@BSSGP_Types.Location_Estimate_BSSGP.ext", &BITSTRING_ber_, &Location__Estimate__BSSGP_ext_raw_, NULL, &Location__Estimate__BSSGP_ext_xer_, &BITSTRING_json_, &Location__Estimate__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Estimate__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Location__Estimate__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Location__Estimate__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Location__Estimate__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Location_Estimate_BSSGP.lengthIndicator", NULL, &Location__Estimate__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Estimate__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Location__Estimate__BSSGP_location_xer_ = { {"location>\n", "location>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Location__Estimate__BSSGP_location_oer_ext_arr_[0] = {};
const int Location__Estimate__BSSGP_location_oer_p_[0] = {};
const TTCN_OERdescriptor_t Location__Estimate__BSSGP_location_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Location__Estimate__BSSGP_location_oer_ext_arr_, 0, Location__Estimate__BSSGP_location_oer_p_};
const TTCN_Typedescriptor_t Location__Estimate__BSSGP_location_descr_ = { "@BSSGP_Types.Location_Estimate_BSSGP.location", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &Location__Estimate__BSSGP_location_xer_, &OCTETSTRING_json_, &Location__Estimate__BSSGP_location_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Estimate__BSSGP_location_default_coding("RAW");
const TTCN_RAWdescriptor_t Location__Estimate__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Location__Estimate__BSSGP
const TTCN_Typedescriptor_t Location__Estimate__BSSGP_descr_ = { "@BSSGP_Types.Location_Estimate_BSSGP", NULL, &Location__Estimate__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Location__Estimate__BSSGP_default_coding("RAW");
const XERdescriptor_t       Positioning__Data__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Positioning__Data__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Positioning__Data__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Positioning__Data__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Positioning__Data__BSSGP_iEI_oer_ext_arr_, 0, Positioning__Data__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Positioning__Data__BSSGP_iEI_descr_ = { "@BSSGP_Types.Positioning_Data_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Positioning__Data__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Positioning__Data__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Positioning__Data__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Positioning__Data__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Positioning__Data__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Positioning__Data__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Positioning__Data__BSSGP_ext_descr_ = { "@BSSGP_Types.Positioning_Data_BSSGP.ext", &BITSTRING_ber_, &Positioning__Data__BSSGP_ext_raw_, NULL, &Positioning__Data__BSSGP_ext_xer_, &BITSTRING_json_, &Positioning__Data__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Positioning__Data__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Positioning__Data__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Positioning__Data__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Positioning__Data__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Positioning_Data_BSSGP.lengthIndicator", NULL, &Positioning__Data__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Positioning__Data__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       PositioningDataValue_positioningDataDiscriminator_xer_ = { {"positioningDataDiscriminator>\n", "positioningDataDiscriminator>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PositioningDataValue_positioningDataDiscriminator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PositioningDataValue_positioningDataDiscriminator_descr_ = { "@BSSGP_Types.PositioningDataValue.positioningDataDiscriminator", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PositioningDataValue_positioningDataDiscriminator_xer_, &BITSTRING_json_, &PositioningDataValue_positioningDataDiscriminator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PositioningDataValue_positioningDataDiscriminator_default_coding("RAW");
const XERdescriptor_t       PositioningDataValue_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PositioningDataValue_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PositioningDataValue_spare_descr_ = { "@BSSGP_Types.PositioningDataValue.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &PositioningDataValue_spare_xer_, &BITSTRING_json_, &PositioningDataValue_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PositioningDataValue_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t PositioningMethod__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PositioningMethod__List
const TTCN_Typedescriptor_t PositioningMethod__List_descr_ = { "@BSSGP_Types.PositioningMethod_List", NULL, &PositioningMethod__List_raw_, NULL, NULL, NULL, NULL, NULL, &PositioningMethodValue_descr_, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       PositioningMethodValue_usage_xer_ = { {"usage>\n", "usage>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PositioningMethodValue_usage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PositioningMethodValue_usage_descr_ = { "@BSSGP_Types.PositioningMethodValue.usage", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &PositioningMethodValue_usage_xer_, &BITSTRING_json_, &PositioningMethodValue_usage_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PositioningMethodValue_usage_default_coding("RAW");
const XERdescriptor_t       PositioningMethodValue_positioningMethod_xer_ = { {"positioningMethod>\n", "positioningMethod>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PositioningMethodValue_positioningMethod_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PositioningMethodValue_positioningMethod_descr_ = { "@BSSGP_Types.PositioningMethodValue.positioningMethod", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &PositioningMethodValue_positioningMethod_xer_, &BITSTRING_json_, &PositioningMethodValue_positioningMethod_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PositioningMethodValue_positioningMethod_default_coding("RAW");
const TTCN_RAWdescriptor_t PositioningMethodValue_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PositioningMethodValue
const TTCN_Typedescriptor_t PositioningMethodValue_descr_ = { "@BSSGP_Types.PositioningMethodValue", NULL, &PositioningMethodValue_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PositioningMethodValue_default_coding("RAW");
UNIVERSAL_CHARSTRING PositioningMethod__List_0_default_coding("RAW");
UNIVERSAL_CHARSTRING PositioningMethod__List_default_coding("RAW");
UNIVERSAL_CHARSTRING PositioningDataValue_positioningMethod__List_default_coding("RAW");
const TTCN_RAWdescriptor_t PositioningDataValue_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PositioningDataValue
const TTCN_Typedescriptor_t PositioningDataValue_descr_ = { "@BSSGP_Types.PositioningDataValue", NULL, &PositioningDataValue_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PositioningDataValue_default_coding("RAW");
UNIVERSAL_CHARSTRING Positioning__Data__BSSGP_positioningDataValue_default_coding("RAW");
const TTCN_RAWdescriptor_t Positioning__Data__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Positioning__Data__BSSGP
const TTCN_Typedescriptor_t Positioning__Data__BSSGP_descr_ = { "@BSSGP_Types.Positioning_Data_BSSGP", NULL, &Positioning__Data__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Positioning__Data__BSSGP_default_coding("RAW");
const XERdescriptor_t       Deciphering__Keys__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Deciphering__Keys__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Deciphering__Keys__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Deciphering__Keys__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Deciphering__Keys__BSSGP_iEI_oer_ext_arr_, 0, Deciphering__Keys__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Deciphering__Keys__BSSGP_iEI_descr_ = { "@BSSGP_Types.Deciphering_Keys_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Deciphering__Keys__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Deciphering__Keys__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Deciphering__Keys__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Deciphering__Keys__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Deciphering__Keys__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Deciphering__Keys__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Deciphering__Keys__BSSGP_ext_descr_ = { "@BSSGP_Types.Deciphering_Keys_BSSGP.ext", &BITSTRING_ber_, &Deciphering__Keys__BSSGP_ext_raw_, NULL, &Deciphering__Keys__BSSGP_ext_xer_, &BITSTRING_json_, &Deciphering__Keys__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Deciphering__Keys__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Deciphering__Keys__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Deciphering__Keys__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Deciphering__Keys__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Deciphering_Keys_BSSGP.lengthIndicator", NULL, &Deciphering__Keys__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Deciphering__Keys__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       DecipheringKeysValue_cipheringkeyFlag_xer_ = { {"cipheringkeyFlag>\n", "cipheringkeyFlag>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DecipheringKeysValue_cipheringkeyFlag_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DecipheringKeysValue_cipheringkeyFlag_descr_ = { "@BSSGP_Types.DecipheringKeysValue.cipheringkeyFlag", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &DecipheringKeysValue_cipheringkeyFlag_xer_, &BITSTRING_json_, &DecipheringKeysValue_cipheringkeyFlag_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DecipheringKeysValue_cipheringkeyFlag_default_coding("RAW");
const XERdescriptor_t       DecipheringKeysValue_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DecipheringKeysValue_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DecipheringKeysValue_spare_descr_ = { "@BSSGP_Types.DecipheringKeysValue.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &DecipheringKeysValue_spare_xer_, &BITSTRING_json_, &DecipheringKeysValue_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DecipheringKeysValue_spare_default_coding("RAW");
const XERdescriptor_t       DecipheringKeysValue_currentDecipheringKeyValue_xer_ = { {"currentDecipheringKeyValue>\n", "currentDecipheringKeyValue>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int DecipheringKeysValue_currentDecipheringKeyValue_oer_ext_arr_[0] = {};
const int DecipheringKeysValue_currentDecipheringKeyValue_oer_p_[0] = {};
const TTCN_OERdescriptor_t DecipheringKeysValue_currentDecipheringKeyValue_oer_ = { -1, TRUE, 7, FALSE, 0, 0, DecipheringKeysValue_currentDecipheringKeyValue_oer_ext_arr_, 0, DecipheringKeysValue_currentDecipheringKeyValue_oer_p_};
const TTCN_Typedescriptor_t DecipheringKeysValue_currentDecipheringKeyValue_descr_ = { "@BSSGP_Types.DecipheringKeysValue.currentDecipheringKeyValue", &OCTETSTRING_ber_, &General__Types::OCT7_raw_, &OCTETSTRING_text_, &DecipheringKeysValue_currentDecipheringKeyValue_xer_, &OCTETSTRING_json_, &DecipheringKeysValue_currentDecipheringKeyValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DecipheringKeysValue_currentDecipheringKeyValue_default_coding("RAW");
const XERdescriptor_t       DecipheringKeysValue_nextDecipheringKeyValue_xer_ = { {"nextDecipheringKeyValue>\n", "nextDecipheringKeyValue>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int DecipheringKeysValue_nextDecipheringKeyValue_oer_ext_arr_[0] = {};
const int DecipheringKeysValue_nextDecipheringKeyValue_oer_p_[0] = {};
const TTCN_OERdescriptor_t DecipheringKeysValue_nextDecipheringKeyValue_oer_ = { -1, TRUE, 7, FALSE, 0, 0, DecipheringKeysValue_nextDecipheringKeyValue_oer_ext_arr_, 0, DecipheringKeysValue_nextDecipheringKeyValue_oer_p_};
const TTCN_Typedescriptor_t DecipheringKeysValue_nextDecipheringKeyValue_descr_ = { "@BSSGP_Types.DecipheringKeysValue.nextDecipheringKeyValue", &OCTETSTRING_ber_, &General__Types::OCT7_raw_, &OCTETSTRING_text_, &DecipheringKeysValue_nextDecipheringKeyValue_xer_, &OCTETSTRING_json_, &DecipheringKeysValue_nextDecipheringKeyValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DecipheringKeysValue_nextDecipheringKeyValue_default_coding("RAW");
const TTCN_RAWdescriptor_t DecipheringKeysValue_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for DecipheringKeysValue
const TTCN_Typedescriptor_t DecipheringKeysValue_descr_ = { "@BSSGP_Types.DecipheringKeysValue", NULL, &DecipheringKeysValue_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DecipheringKeysValue_default_coding("RAW");
UNIVERSAL_CHARSTRING Deciphering__Keys__BSSGP_decipheringKeysValue_default_coding("RAW");
const TTCN_RAWdescriptor_t Deciphering__Keys__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Deciphering__Keys__BSSGP
const TTCN_Typedescriptor_t Deciphering__Keys__BSSGP_descr_ = { "@BSSGP_Types.Deciphering_Keys_BSSGP", NULL, &Deciphering__Keys__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Deciphering__Keys__BSSGP_default_coding("RAW");
const XERdescriptor_t       LCS__Priority__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LCS__Priority__BSSGP_iEI_oer_ext_arr_[0] = {};
const int LCS__Priority__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t LCS__Priority__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LCS__Priority__BSSGP_iEI_oer_ext_arr_, 0, LCS__Priority__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t LCS__Priority__BSSGP_iEI_descr_ = { "@BSSGP_Types.LCS_Priority_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LCS__Priority__BSSGP_iEI_xer_, &OCTETSTRING_json_, &LCS__Priority__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Priority__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Priority__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LCS__Priority__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Priority__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Priority__BSSGP_ext_descr_ = { "@BSSGP_Types.LCS_Priority_BSSGP.ext", &BITSTRING_ber_, &LCS__Priority__BSSGP_ext_raw_, NULL, &LCS__Priority__BSSGP_ext_xer_, &BITSTRING_json_, &LCS__Priority__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Priority__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Priority__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LCS__Priority__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t LCS__Priority__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.LCS_Priority_BSSGP.lengthIndicator", NULL, &LCS__Priority__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Priority__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       LCS__Priority__BSSGP_priority__Value_xer_ = { {"priority_Value>\n", "priority_Value>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LCS__Priority__BSSGP_priority__Value_oer_ext_arr_[0] = {};
const int LCS__Priority__BSSGP_priority__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t LCS__Priority__BSSGP_priority__Value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LCS__Priority__BSSGP_priority__Value_oer_ext_arr_, 0, LCS__Priority__BSSGP_priority__Value_oer_p_};
const TTCN_Typedescriptor_t LCS__Priority__BSSGP_priority__Value_descr_ = { "@BSSGP_Types.LCS_Priority_BSSGP.priority_Value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LCS__Priority__BSSGP_priority__Value_xer_, &OCTETSTRING_json_, &LCS__Priority__BSSGP_priority__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Priority__BSSGP_priority__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Priority__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LCS__Priority__BSSGP
const TTCN_Typedescriptor_t LCS__Priority__BSSGP_descr_ = { "@BSSGP_Types.LCS_Priority_BSSGP", NULL, &LCS__Priority__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Priority__BSSGP_default_coding("RAW");
const XERdescriptor_t       LCS__Cause__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LCS__Cause__BSSGP_iEI_oer_ext_arr_[0] = {};
const int LCS__Cause__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t LCS__Cause__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LCS__Cause__BSSGP_iEI_oer_ext_arr_, 0, LCS__Cause__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t LCS__Cause__BSSGP_iEI_descr_ = { "@BSSGP_Types.LCS_Cause_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LCS__Cause__BSSGP_iEI_xer_, &OCTETSTRING_json_, &LCS__Cause__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Cause__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Cause__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LCS__Cause__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Cause__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Cause__BSSGP_ext_descr_ = { "@BSSGP_Types.LCS_Cause_BSSGP.ext", &BITSTRING_ber_, &LCS__Cause__BSSGP_ext_raw_, NULL, &LCS__Cause__BSSGP_ext_xer_, &BITSTRING_json_, &LCS__Cause__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Cause__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Cause__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LCS__Cause__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t LCS__Cause__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.LCS_Cause_BSSGP.lengthIndicator", NULL, &LCS__Cause__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Cause__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       LCS__Cause__BSSGP_cause__Value_xer_ = { {"cause_Value>\n", "cause_Value>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LCS__Cause__BSSGP_cause__Value_oer_ext_arr_[0] = {};
const int LCS__Cause__BSSGP_cause__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t LCS__Cause__BSSGP_cause__Value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LCS__Cause__BSSGP_cause__Value_oer_ext_arr_, 0, LCS__Cause__BSSGP_cause__Value_oer_p_};
const TTCN_Typedescriptor_t LCS__Cause__BSSGP_cause__Value_descr_ = { "@BSSGP_Types.LCS_Cause_BSSGP.cause_Value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LCS__Cause__BSSGP_cause__Value_xer_, &OCTETSTRING_json_, &LCS__Cause__BSSGP_cause__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Cause__BSSGP_cause__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Cause__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LCS__Cause__BSSGP
const TTCN_Typedescriptor_t LCS__Cause__BSSGP_descr_ = { "@BSSGP_Types.LCS_Cause_BSSGP", NULL, &LCS__Cause__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       LCS__Cause__BSSGP_diagnostic__Value_xer_ = { {"diagnostic_Value>\n", "diagnostic_Value>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LCS__Cause__BSSGP_diagnostic__Value_oer_ext_arr_[0] = {};
const int LCS__Cause__BSSGP_diagnostic__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t LCS__Cause__BSSGP_diagnostic__Value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LCS__Cause__BSSGP_diagnostic__Value_oer_ext_arr_, 0, LCS__Cause__BSSGP_diagnostic__Value_oer_p_};
const TTCN_Typedescriptor_t LCS__Cause__BSSGP_diagnostic__Value_descr_ = { "@BSSGP_Types.LCS_Cause_BSSGP.diagnostic_Value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LCS__Cause__BSSGP_diagnostic__Value_xer_, &OCTETSTRING_json_, &LCS__Cause__BSSGP_diagnostic__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Cause__BSSGP_diagnostic__Value_default_coding("RAW");
UNIVERSAL_CHARSTRING LCS__Cause__BSSGP_default_coding("RAW");
const XERdescriptor_t       LCS__Capability__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LCS__Capability__BSSGP_iEI_oer_ext_arr_[0] = {};
const int LCS__Capability__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t LCS__Capability__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LCS__Capability__BSSGP_iEI_oer_ext_arr_, 0, LCS__Capability__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t LCS__Capability__BSSGP_iEI_descr_ = { "@BSSGP_Types.LCS_Capability_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &LCS__Capability__BSSGP_iEI_xer_, &OCTETSTRING_json_, &LCS__Capability__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Capability__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Capability__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       LCS__Capability__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Capability__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Capability__BSSGP_ext_descr_ = { "@BSSGP_Types.LCS_Capability_BSSGP.ext", &BITSTRING_ber_, &LCS__Capability__BSSGP_ext_raw_, NULL, &LCS__Capability__BSSGP_ext_xer_, &BITSTRING_json_, &LCS__Capability__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Capability__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Capability__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LCS__Capability__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t LCS__Capability__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.LCS_Capability_BSSGP.lengthIndicator", NULL, &LCS__Capability__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Capability__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       LCS__Capability__BSSGP_gPS__C_xer_ = { {"gPS_C>\n", "gPS_C>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Capability__BSSGP_gPS__C_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Capability__BSSGP_gPS__C_descr_ = { "@BSSGP_Types.LCS_Capability_BSSGP.gPS_C", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LCS__Capability__BSSGP_gPS__C_xer_, &BITSTRING_json_, &LCS__Capability__BSSGP_gPS__C_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Capability__BSSGP_gPS__C_default_coding("RAW");
const XERdescriptor_t       LCS__Capability__BSSGP_gPS__B_xer_ = { {"gPS_B>\n", "gPS_B>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Capability__BSSGP_gPS__B_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Capability__BSSGP_gPS__B_descr_ = { "@BSSGP_Types.LCS_Capability_BSSGP.gPS_B", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LCS__Capability__BSSGP_gPS__B_xer_, &BITSTRING_json_, &LCS__Capability__BSSGP_gPS__B_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Capability__BSSGP_gPS__B_default_coding("RAW");
const XERdescriptor_t       LCS__Capability__BSSGP_gPS__A_xer_ = { {"gPS_A>\n", "gPS_A>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Capability__BSSGP_gPS__A_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Capability__BSSGP_gPS__A_descr_ = { "@BSSGP_Types.LCS_Capability_BSSGP.gPS_A", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LCS__Capability__BSSGP_gPS__A_xer_, &BITSTRING_json_, &LCS__Capability__BSSGP_gPS__A_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Capability__BSSGP_gPS__A_default_coding("RAW");
const XERdescriptor_t       LCS__Capability__BSSGP_oTD__B_xer_ = { {"oTD_B>\n", "oTD_B>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Capability__BSSGP_oTD__B_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Capability__BSSGP_oTD__B_descr_ = { "@BSSGP_Types.LCS_Capability_BSSGP.oTD_B", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LCS__Capability__BSSGP_oTD__B_xer_, &BITSTRING_json_, &LCS__Capability__BSSGP_oTD__B_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Capability__BSSGP_oTD__B_default_coding("RAW");
const XERdescriptor_t       LCS__Capability__BSSGP_oTD__A_xer_ = { {"oTD_A>\n", "oTD_A>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Capability__BSSGP_oTD__A_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Capability__BSSGP_oTD__A_descr_ = { "@BSSGP_Types.LCS_Capability_BSSGP.oTD_A", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &LCS__Capability__BSSGP_oTD__A_xer_, &BITSTRING_json_, &LCS__Capability__BSSGP_oTD__A_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Capability__BSSGP_oTD__A_default_coding("RAW");
const XERdescriptor_t       LCS__Capability__BSSGP_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t LCS__Capability__BSSGP_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t LCS__Capability__BSSGP_spare_descr_ = { "@BSSGP_Types.LCS_Capability_BSSGP.spare", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &LCS__Capability__BSSGP_spare_xer_, &BITSTRING_json_, &LCS__Capability__BSSGP_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Capability__BSSGP_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t LCS__Capability__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LCS__Capability__BSSGP
const TTCN_Typedescriptor_t LCS__Capability__BSSGP_descr_ = { "@BSSGP_Types.LCS_Capability_BSSGP", NULL, &LCS__Capability__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LCS__Capability__BSSGP_default_coding("RAW");
const XERdescriptor_t       RRLP__Flags__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RRLP__Flags__BSSGP_iEI_oer_ext_arr_[0] = {};
const int RRLP__Flags__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RRLP__Flags__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RRLP__Flags__BSSGP_iEI_oer_ext_arr_, 0, RRLP__Flags__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t RRLP__Flags__BSSGP_iEI_descr_ = { "@BSSGP_Types.RRLP_Flags_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RRLP__Flags__BSSGP_iEI_xer_, &OCTETSTRING_json_, &RRLP__Flags__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__Flags__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RRLP__Flags__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RRLP__Flags__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RRLP__Flags__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RRLP__Flags__BSSGP_ext_descr_ = { "@BSSGP_Types.RRLP_Flags_BSSGP.ext", &BITSTRING_ber_, &RRLP__Flags__BSSGP_ext_raw_, NULL, &RRLP__Flags__BSSGP_ext_xer_, &BITSTRING_json_, &RRLP__Flags__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__Flags__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RRLP__Flags__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RRLP__Flags__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t RRLP__Flags__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.RRLP_Flags_BSSGP.lengthIndicator", NULL, &RRLP__Flags__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__Flags__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       RRLP__Flags__BSSGP_flag1_xer_ = { {"flag1>\n", "flag1>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RRLP__Flags__BSSGP_flag1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RRLP__Flags__BSSGP_flag1_descr_ = { "@BSSGP_Types.RRLP_Flags_BSSGP.flag1", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &RRLP__Flags__BSSGP_flag1_xer_, &BITSTRING_json_, &RRLP__Flags__BSSGP_flag1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__Flags__BSSGP_flag1_default_coding("RAW");
const XERdescriptor_t       RRLP__Flags__BSSGP_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RRLP__Flags__BSSGP_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RRLP__Flags__BSSGP_spare_descr_ = { "@BSSGP_Types.RRLP_Flags_BSSGP.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &RRLP__Flags__BSSGP_spare_xer_, &BITSTRING_json_, &RRLP__Flags__BSSGP_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__Flags__BSSGP_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t RRLP__Flags__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RRLP__Flags__BSSGP
const TTCN_Typedescriptor_t RRLP__Flags__BSSGP_descr_ = { "@BSSGP_Types.RRLP_Flags_BSSGP", NULL, &RRLP__Flags__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RRLP__Flags__BSSGP_default_coding("RAW");
const XERdescriptor_t       RIM__Application__Identity_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RIM__Application__Identity_iEI_oer_ext_arr_[0] = {};
const int RIM__Application__Identity_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RIM__Application__Identity_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Application__Identity_iEI_oer_ext_arr_, 0, RIM__Application__Identity_iEI_oer_p_};
const TTCN_Typedescriptor_t RIM__Application__Identity_iEI_descr_ = { "@BSSGP_Types.RIM_Application_Identity.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Application__Identity_iEI_xer_, &OCTETSTRING_json_, &RIM__Application__Identity_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Application__Identity_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Application__Identity_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RIM__Application__Identity_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RIM__Application__Identity_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RIM__Application__Identity_ext_descr_ = { "@BSSGP_Types.RIM_Application_Identity.ext", &BITSTRING_ber_, &RIM__Application__Identity_ext_raw_, NULL, &RIM__Application__Identity_ext_xer_, &BITSTRING_json_, &RIM__Application__Identity_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Application__Identity_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Application__Identity_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__Application__Identity_lengthIndicator
const TTCN_Typedescriptor_t RIM__Application__Identity_lengthIndicator_descr_ = { "@BSSGP_Types.RIM_Application_Identity.lengthIndicator", NULL, &RIM__Application__Identity_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Application__Identity_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       RIM__Application__Identity_rIMApplicationIdentity_xer_ = { {"rIMApplicationIdentity>\n", "rIMApplicationIdentity>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RIM__Application__Identity_rIMApplicationIdentity_oer_ext_arr_[0] = {};
const int RIM__Application__Identity_rIMApplicationIdentity_oer_p_[0] = {};
const TTCN_OERdescriptor_t RIM__Application__Identity_rIMApplicationIdentity_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Application__Identity_rIMApplicationIdentity_oer_ext_arr_, 0, RIM__Application__Identity_rIMApplicationIdentity_oer_p_};
const TTCN_Typedescriptor_t RIM__Application__Identity_rIMApplicationIdentity_descr_ = { "@BSSGP_Types.RIM_Application_Identity.rIMApplicationIdentity", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Application__Identity_rIMApplicationIdentity_xer_, &OCTETSTRING_json_, &RIM__Application__Identity_rIMApplicationIdentity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Application__Identity_rIMApplicationIdentity_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Application__Identity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__Application__Identity
const TTCN_Typedescriptor_t RIM__Application__Identity_descr_ = { "@BSSGP_Types.RIM_Application_Identity", NULL, &RIM__Application__Identity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Application__Identity_default_coding("RAW");
const XERdescriptor_t       RIM__Sequence__Number_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RIM__Sequence__Number_iEI_oer_ext_arr_[0] = {};
const int RIM__Sequence__Number_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RIM__Sequence__Number_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Sequence__Number_iEI_oer_ext_arr_, 0, RIM__Sequence__Number_iEI_oer_p_};
const TTCN_Typedescriptor_t RIM__Sequence__Number_iEI_descr_ = { "@BSSGP_Types.RIM_Sequence_Number.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Sequence__Number_iEI_xer_, &OCTETSTRING_json_, &RIM__Sequence__Number_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Sequence__Number_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Sequence__Number_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RIM__Sequence__Number_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RIM__Sequence__Number_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RIM__Sequence__Number_ext_descr_ = { "@BSSGP_Types.RIM_Sequence_Number.ext", &BITSTRING_ber_, &RIM__Sequence__Number_ext_raw_, NULL, &RIM__Sequence__Number_ext_xer_, &BITSTRING_json_, &RIM__Sequence__Number_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Sequence__Number_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Sequence__Number_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__Sequence__Number_lengthIndicator
const TTCN_Typedescriptor_t RIM__Sequence__Number_lengthIndicator_descr_ = { "@BSSGP_Types.RIM_Sequence_Number.lengthIndicator", NULL, &RIM__Sequence__Number_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Sequence__Number_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       RIM__Sequence__Number_rIMSequenceNumber_xer_ = { {"rIMSequenceNumber>\n", "rIMSequenceNumber>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RIM__Sequence__Number_rIMSequenceNumber_oer_ext_arr_[0] = {};
const int RIM__Sequence__Number_rIMSequenceNumber_oer_p_[0] = {};
const TTCN_OERdescriptor_t RIM__Sequence__Number_rIMSequenceNumber_oer_ = { -1, TRUE, 4, FALSE, 0, 0, RIM__Sequence__Number_rIMSequenceNumber_oer_ext_arr_, 0, RIM__Sequence__Number_rIMSequenceNumber_oer_p_};
const TTCN_Typedescriptor_t RIM__Sequence__Number_rIMSequenceNumber_descr_ = { "@BSSGP_Types.RIM_Sequence_Number.rIMSequenceNumber", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &RIM__Sequence__Number_rIMSequenceNumber_xer_, &OCTETSTRING_json_, &RIM__Sequence__Number_rIMSequenceNumber_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Sequence__Number_rIMSequenceNumber_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Sequence__Number_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__Sequence__Number
const TTCN_Typedescriptor_t RIM__Sequence__Number_descr_ = { "@BSSGP_Types.RIM_Sequence_Number", NULL, &RIM__Sequence__Number_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Sequence__Number_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Request__RIM__Container_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Request__RIM__Container_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Request__RIM__Container_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Request__RIM__Container_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__RIM__Container_iEI_oer_ext_arr_, 0, RAN__Information__Request__RIM__Container_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Request_RIM_Container.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__RIM__Container_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__RIM__Container_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__RIM__Container_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Request__RIM__Container_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Request__RIM__Container_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container_ext_descr_ = { "@BSSGP_Types.RAN_Information_Request_RIM_Container.ext", &BITSTRING_ber_, &RAN__Information__Request__RIM__Container_ext_raw_, NULL, &RAN__Information__Request__RIM__Container_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__RIM__Container_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__RIM__Container_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__RIM__Container_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Request_RIM_Container.lengthIndicator", NULL, &RAN__Information__Request__RIM__Container_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container_rIM__Application__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container_rIM__Sequence__Number_default_coding("RAW");
const XERdescriptor_t       RIM__PDU__Indications_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RIM__PDU__Indications_iEI_oer_ext_arr_[0] = {};
const int RIM__PDU__Indications_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RIM__PDU__Indications_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__PDU__Indications_iEI_oer_ext_arr_, 0, RIM__PDU__Indications_iEI_oer_p_};
const TTCN_Typedescriptor_t RIM__PDU__Indications_iEI_descr_ = { "@BSSGP_Types.RIM_PDU_Indications.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__PDU__Indications_iEI_xer_, &OCTETSTRING_json_, &RIM__PDU__Indications_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__PDU__Indications_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__PDU__Indications_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RIM__PDU__Indications_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RIM__PDU__Indications_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RIM__PDU__Indications_ext_descr_ = { "@BSSGP_Types.RIM_PDU_Indications.ext", &BITSTRING_ber_, &RIM__PDU__Indications_ext_raw_, NULL, &RIM__PDU__Indications_ext_xer_, &BITSTRING_json_, &RIM__PDU__Indications_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__PDU__Indications_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__PDU__Indications_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__PDU__Indications_lengthIndicator
const TTCN_Typedescriptor_t RIM__PDU__Indications_lengthIndicator_descr_ = { "@BSSGP_Types.RIM_PDU_Indications.lengthIndicator", NULL, &RIM__PDU__Indications_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__PDU__Indications_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       RIM__PDU__Indications_ack_xer_ = { {"ack>\n", "ack>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RIM__PDU__Indications_ack_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RIM__PDU__Indications_ack_descr_ = { "@BSSGP_Types.RIM_PDU_Indications.ack", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &RIM__PDU__Indications_ack_xer_, &BITSTRING_json_, &RIM__PDU__Indications_ack_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__PDU__Indications_ack_default_coding("RAW");
const XERdescriptor_t       RIM__PDU__Indications_pDU__Type__Extension_xer_ = { {"pDU_Type_Extension>\n", "pDU_Type_Extension>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RIM__PDU__Indications_pDU__Type__Extension_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RIM__PDU__Indications_pDU__Type__Extension_descr_ = { "@BSSGP_Types.RIM_PDU_Indications.pDU_Type_Extension", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &RIM__PDU__Indications_pDU__Type__Extension_xer_, &BITSTRING_json_, &RIM__PDU__Indications_pDU__Type__Extension_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__PDU__Indications_pDU__Type__Extension_default_coding("RAW");
const XERdescriptor_t       RIM__PDU__Indications_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RIM__PDU__Indications_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RIM__PDU__Indications_reserved_descr_ = { "@BSSGP_Types.RIM_PDU_Indications.reserved", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RIM__PDU__Indications_reserved_xer_, &BITSTRING_json_, &RIM__PDU__Indications_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__PDU__Indications_reserved_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__PDU__Indications_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__PDU__Indications
const TTCN_Typedescriptor_t RIM__PDU__Indications_descr_ = { "@BSSGP_Types.RIM_PDU_Indications", NULL, &RIM__PDU__Indications_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__PDU__Indications_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container_rIM__PDU__Indications_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__RIM__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__RIM__Container
const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container_descr_ = { "@BSSGP_Types.RAN_Information_Request_RIM_Container", NULL, &RAN__Information__Request__RIM__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       RIM__Protocol__Version__Number_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RIM__Protocol__Version__Number_iEI_oer_ext_arr_[0] = {};
const int RIM__Protocol__Version__Number_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RIM__Protocol__Version__Number_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Protocol__Version__Number_iEI_oer_ext_arr_, 0, RIM__Protocol__Version__Number_iEI_oer_p_};
const TTCN_Typedescriptor_t RIM__Protocol__Version__Number_iEI_descr_ = { "@BSSGP_Types.RIM_Protocol_Version_Number.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Protocol__Version__Number_iEI_xer_, &OCTETSTRING_json_, &RIM__Protocol__Version__Number_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Protocol__Version__Number_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Protocol__Version__Number_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RIM__Protocol__Version__Number_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RIM__Protocol__Version__Number_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RIM__Protocol__Version__Number_ext_descr_ = { "@BSSGP_Types.RIM_Protocol_Version_Number.ext", &BITSTRING_ber_, &RIM__Protocol__Version__Number_ext_raw_, NULL, &RIM__Protocol__Version__Number_ext_xer_, &BITSTRING_json_, &RIM__Protocol__Version__Number_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Protocol__Version__Number_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Protocol__Version__Number_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__Protocol__Version__Number_lengthIndicator
const TTCN_Typedescriptor_t RIM__Protocol__Version__Number_lengthIndicator_descr_ = { "@BSSGP_Types.RIM_Protocol_Version_Number.lengthIndicator", NULL, &RIM__Protocol__Version__Number_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Protocol__Version__Number_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       RIM__Protocol__Version__Number_rIMProtocolVersionNumber_xer_ = { {"rIMProtocolVersionNumber>\n", "rIMProtocolVersionNumber>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RIM__Protocol__Version__Number_rIMProtocolVersionNumber_oer_ext_arr_[0] = {};
const int RIM__Protocol__Version__Number_rIMProtocolVersionNumber_oer_p_[0] = {};
const TTCN_OERdescriptor_t RIM__Protocol__Version__Number_rIMProtocolVersionNumber_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Protocol__Version__Number_rIMProtocolVersionNumber_oer_ext_arr_, 0, RIM__Protocol__Version__Number_rIMProtocolVersionNumber_oer_p_};
const TTCN_Typedescriptor_t RIM__Protocol__Version__Number_rIMProtocolVersionNumber_descr_ = { "@BSSGP_Types.RIM_Protocol_Version_Number.rIMProtocolVersionNumber", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Protocol__Version__Number_rIMProtocolVersionNumber_xer_, &OCTETSTRING_json_, &RIM__Protocol__Version__Number_rIMProtocolVersionNumber_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Protocol__Version__Number_rIMProtocolVersionNumber_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Protocol__Version__Number_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__Protocol__Version__Number
const TTCN_Typedescriptor_t RIM__Protocol__Version__Number_descr_ = { "@BSSGP_Types.RIM_Protocol_Version_Number", NULL, &RIM__Protocol__Version__Number_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Protocol__Version__Number_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container_rIM__Protocol__Version__Number_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container", NULL, &RAN__Information__Request__Application__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       RAN__Information__Request__Application__Container__NACC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Request__Application__Container__NACC_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Request__Application__Container__NACC_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__NACC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__Application__Container__NACC_iEI_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__NACC_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__NACC_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_NACC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__NACC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__NACC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__NACC_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__NACC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Request__Application__Container__NACC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__NACC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__NACC_ext_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_NACC.ext", &BITSTRING_ber_, &RAN__Information__Request__Application__Container__NACC_ext_raw_, NULL, &RAN__Information__Request__Application__Container__NACC_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__Application__Container__NACC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__NACC_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__NACC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container__NACC_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__NACC_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_NACC.lengthIndicator", NULL, &RAN__Information__Request__Application__Container__NACC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__NACC_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__NACC_reporting__Cell__Identifier_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__NACC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container__NACC
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__NACC_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_NACC", NULL, &RAN__Information__Request__Application__Container__NACC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__NACC_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container_nacc_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Request__Application__Container__SI3_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Request__Application__Container__SI3_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Request__Application__Container__SI3_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__SI3_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__Application__Container__SI3_iEI_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__SI3_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SI3_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_SI3.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__SI3_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__SI3_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SI3_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SI3_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Request__Application__Container__SI3_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__SI3_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SI3_ext_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_SI3.ext", &BITSTRING_ber_, &RAN__Information__Request__Application__Container__SI3_ext_raw_, NULL, &RAN__Information__Request__Application__Container__SI3_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__Application__Container__SI3_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SI3_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SI3_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container__SI3_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SI3_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_SI3.lengthIndicator", NULL, &RAN__Information__Request__Application__Container__SI3_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SI3_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SI3_reporting__Cell__Identifier_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SI3_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container__SI3
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SI3_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_SI3", NULL, &RAN__Information__Request__Application__Container__SI3_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SI3_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container_si3_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Request__Application__Container__MBMS__data__channel_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Request__Application__Container__MBMS__data__channel_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Request__Application__Container__MBMS__data__channel_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__MBMS__data__channel_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__Application__Container__MBMS__data__channel_iEI_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__MBMS__data__channel_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__MBMS__data__channel_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_MBMS_data_channel.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__MBMS__data__channel_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__MBMS__data__channel_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__MBMS__data__channel_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__MBMS__data__channel_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Request__Application__Container__MBMS__data__channel_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__MBMS__data__channel_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__MBMS__data__channel_ext_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_MBMS_data_channel.ext", &BITSTRING_ber_, &RAN__Information__Request__Application__Container__MBMS__data__channel_ext_raw_, NULL, &RAN__Information__Request__Application__Container__MBMS__data__channel_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__Application__Container__MBMS__data__channel_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__MBMS__data__channel_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__MBMS__data__channel_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container__MBMS__data__channel_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__MBMS__data__channel_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_MBMS_data_channel.lengthIndicator", NULL, &RAN__Information__Request__Application__Container__MBMS__data__channel_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__MBMS__data__channel_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__MBMS__data__channel_reporting__Cell__Identifier_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__MBMS__data__channel_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container__MBMS__data__channel
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__MBMS__data__channel_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_MBMS_data_channel", NULL, &RAN__Information__Request__Application__Container__MBMS__data__channel_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__MBMS__data__channel_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container_mBMS__data__channel_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__RIM__Container_application__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__RIM__Container_application__Container
const TTCN_Typedescriptor_t RAN__Information__Request__RIM__Container_application__Container_descr_ = { "@BSSGP_Types.RAN_Information_Request_RIM_Container.application_Container", NULL, &RAN__Information__Request__RIM__Container_application__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container_application__Container_default_coding("RAW");
const XERdescriptor_t       SON__Transfer__Application__Identity__TLV_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SON__Transfer__Application__Identity__TLV_iEI_oer_ext_arr_[0] = {};
const int SON__Transfer__Application__Identity__TLV_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t SON__Transfer__Application__Identity__TLV_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SON__Transfer__Application__Identity__TLV_iEI_oer_ext_arr_, 0, SON__Transfer__Application__Identity__TLV_iEI_oer_p_};
const TTCN_Typedescriptor_t SON__Transfer__Application__Identity__TLV_iEI_descr_ = { "@BSSGP_Types.SON_Transfer_Application_Identity_TLV.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SON__Transfer__Application__Identity__TLV_iEI_xer_, &OCTETSTRING_json_, &SON__Transfer__Application__Identity__TLV_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SON__Transfer__Application__Identity__TLV_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t SON__Transfer__Application__Identity__TLV_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       SON__Transfer__Application__Identity__TLV_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SON__Transfer__Application__Identity__TLV_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SON__Transfer__Application__Identity__TLV_ext_descr_ = { "@BSSGP_Types.SON_Transfer_Application_Identity_TLV.ext", &BITSTRING_ber_, &SON__Transfer__Application__Identity__TLV_ext_raw_, NULL, &SON__Transfer__Application__Identity__TLV_ext_xer_, &BITSTRING_json_, &SON__Transfer__Application__Identity__TLV_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SON__Transfer__Application__Identity__TLV_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t SON__Transfer__Application__Identity__TLV_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SON__Transfer__Application__Identity__TLV_lengthIndicator
const TTCN_Typedescriptor_t SON__Transfer__Application__Identity__TLV_lengthIndicator_descr_ = { "@BSSGP_Types.SON_Transfer_Application_Identity_TLV.lengthIndicator", NULL, &SON__Transfer__Application__Identity__TLV_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SON__Transfer__Application__Identity__TLV_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       SON__Transfer__Application__Identity__TLV_sON__Transfer__Application__Identity_xer_ = { {"sON_Transfer_Application_Identity>\n", "sON_Transfer_Application_Identity>\n"}, {35, 35}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SON__Transfer__Application__Identity__TLV_sON__Transfer__Application__Identity_oer_ext_arr_[0] = {};
const int SON__Transfer__Application__Identity__TLV_sON__Transfer__Application__Identity_oer_p_[0] = {};
const TTCN_OERdescriptor_t SON__Transfer__Application__Identity__TLV_sON__Transfer__Application__Identity_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SON__Transfer__Application__Identity__TLV_sON__Transfer__Application__Identity_oer_ext_arr_, 0, SON__Transfer__Application__Identity__TLV_sON__Transfer__Application__Identity_oer_p_};
const TTCN_Typedescriptor_t SON__Transfer__Application__Identity__TLV_sON__Transfer__Application__Identity_descr_ = { "@BSSGP_Types.SON_Transfer_Application_Identity_TLV.sON_Transfer_Application_Identity", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SON__Transfer__Application__Identity__TLV_sON__Transfer__Application__Identity_xer_, &OCTETSTRING_json_, &SON__Transfer__Application__Identity__TLV_sON__Transfer__Application__Identity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SON__Transfer__Application__Identity__TLV_sON__Transfer__Application__Identity_default_coding("RAW");
const TTCN_RAWdescriptor_t SON__Transfer__Application__Identity__TLV_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SON__Transfer__Application__Identity__TLV
const TTCN_Typedescriptor_t SON__Transfer__Application__Identity__TLV_descr_ = { "@BSSGP_Types.SON_Transfer_Application_Identity_TLV", NULL, &SON__Transfer__Application__Identity__TLV_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SON__Transfer__Application__Identity__TLV_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container_sON__Transfer__Application__Identity__TLV_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__RIM__Container_default_coding("RAW");
const XERdescriptor_t       RAN__Information__RIM__Container_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__RIM__Container_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__RIM__Container_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__RIM__Container_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__RIM__Container_iEI_oer_ext_arr_, 0, RAN__Information__RIM__Container_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__RIM__Container_iEI_descr_ = { "@BSSGP_Types.RAN_Information_RIM_Container.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__RIM__Container_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__RIM__Container_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__RIM__Container_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__RIM__Container_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__RIM__Container_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__RIM__Container_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__RIM__Container_ext_descr_ = { "@BSSGP_Types.RAN_Information_RIM_Container.ext", &BITSTRING_ber_, &RAN__Information__RIM__Container_ext_raw_, NULL, &RAN__Information__RIM__Container_ext_xer_, &BITSTRING_json_, &RAN__Information__RIM__Container_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__RIM__Container_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__RIM__Container_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__RIM__Container_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__RIM__Container_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_RIM_Container.lengthIndicator", NULL, &RAN__Information__RIM__Container_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__RIM__Container_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__RIM__Container_rIM__Application__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__RIM__Container_rIM__Sequence__Number_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__RIM__Container_rIM__PDU__Indications_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__RIM__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__RIM__Container
const TTCN_Typedescriptor_t RAN__Information__RIM__Container_descr_ = { "@BSSGP_Types.RAN_Information_RIM_Container", NULL, &RAN__Information__RIM__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__RIM__Container_rIM__Protocol__Version__Number_default_coding("RAW");
const TTCN_RAWdescriptor_t ApplContainer__or__ApplErrContainer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ApplContainer__or__ApplErrContainer
const TTCN_Typedescriptor_t ApplContainer__or__ApplErrContainer_descr_ = { "@BSSGP_Types.ApplContainer_or_ApplErrContainer", NULL, &ApplContainer__or__ApplErrContainer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t ApplContainer__or__ApplErrContainer__NACC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ApplContainer__or__ApplErrContainer__NACC
const TTCN_Typedescriptor_t ApplContainer__or__ApplErrContainer__NACC_descr_ = { "@BSSGP_Types.ApplContainer_or_ApplErrContainer_NACC", NULL, &ApplContainer__or__ApplErrContainer__NACC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       RAN__Information__Application__Container__NACC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Application__Container__NACC_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Application__Container__NACC_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Application__Container__NACC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Container__NACC_iEI_oer_ext_arr_, 0, RAN__Information__Application__Container__NACC_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_NACC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__NACC_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__NACC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__NACC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Application__Container__NACC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Application__Container__NACC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC_ext_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_NACC.ext", &BITSTRING_ber_, &RAN__Information__Application__Container__NACC_ext_raw_, NULL, &RAN__Information__Application__Container__NACC_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__NACC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__NACC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Container__NACC_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_NACC.lengthIndicator", NULL, &RAN__Information__Application__Container__NACC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC_reporting__Cell__Identifier_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Container__NACC_typeBit_xer_ = { {"typeBit>\n", "typeBit>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Application__Container__NACC_typeBit_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC_typeBit_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_NACC.typeBit", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &RAN__Information__Application__Container__NACC_typeBit_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__NACC_typeBit_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC_typeBit_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Container__NACC_number__of__SI__PSI_xer_ = { {"number_of_SI_PSI>\n", "number_of_SI_PSI>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Application__Container__NACC_number__of__SI__PSI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC_number__of__SI__PSI_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_NACC.number_of_SI_PSI", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &RAN__Information__Application__Container__NACC_number__of__SI__PSI_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__NACC_number__of__SI__PSI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC_number__of__SI__PSI_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Container__NACC_sI__PSI_xer_ = { {"sI_PSI>\n", "sI_PSI>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Application__Container__NACC_sI__PSI_oer_ext_arr_[0] = {};
const int RAN__Information__Application__Container__NACC_sI__PSI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Application__Container__NACC_sI__PSI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAN__Information__Application__Container__NACC_sI__PSI_oer_ext_arr_, 0, RAN__Information__Application__Container__NACC_sI__PSI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC_sI__PSI_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_NACC.sI_PSI", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__NACC_sI__PSI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__NACC_sI__PSI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC_sI__PSI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__NACC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Container__NACC
const TTCN_Typedescriptor_t RAN__Information__Application__Container__NACC_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_NACC", NULL, &RAN__Information__Application__Container__NACC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__NACC_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__NACC_application__Container_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__NACC_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Application__Error__Container__NACC_iEI_oer_ext_arr_[0] = {};
const int Application__Error__Container__NACC_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Application__Error__Container__NACC_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__NACC_iEI_oer_ext_arr_, 0, Application__Error__Container__NACC_iEI_oer_p_};
const TTCN_Typedescriptor_t Application__Error__Container__NACC_iEI_descr_ = { "@BSSGP_Types.Application_Error_Container_NACC.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__NACC_iEI_xer_, &OCTETSTRING_json_, &Application__Error__Container__NACC_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__NACC_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__NACC_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Application__Error__Container__NACC_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Application__Error__Container__NACC_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Application__Error__Container__NACC_ext_descr_ = { "@BSSGP_Types.Application_Error_Container_NACC.ext", &BITSTRING_ber_, &Application__Error__Container__NACC_ext_raw_, NULL, &Application__Error__Container__NACC_ext_xer_, &BITSTRING_json_, &Application__Error__Container__NACC_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__NACC_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__NACC_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Error__Container__NACC_lengthIndicator
const TTCN_Typedescriptor_t Application__Error__Container__NACC_lengthIndicator_descr_ = { "@BSSGP_Types.Application_Error_Container_NACC.lengthIndicator", NULL, &Application__Error__Container__NACC_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__NACC_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__NACC_nACC__cause_xer_ = { {"nACC_cause>\n", "nACC_cause>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Application__Error__Container__NACC_nACC__cause_oer_ext_arr_[0] = {};
const int Application__Error__Container__NACC_nACC__cause_oer_p_[0] = {};
const TTCN_OERdescriptor_t Application__Error__Container__NACC_nACC__cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__NACC_nACC__cause_oer_ext_arr_, 0, Application__Error__Container__NACC_nACC__cause_oer_p_};
const TTCN_Typedescriptor_t Application__Error__Container__NACC_nACC__cause_descr_ = { "@BSSGP_Types.Application_Error_Container_NACC.nACC_cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__NACC_nACC__cause_xer_, &OCTETSTRING_json_, &Application__Error__Container__NACC_nACC__cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__NACC_nACC__cause_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Container__IE__NACC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Container__IE__NACC
const TTCN_Typedescriptor_t Application__Container__IE__NACC_descr_ = { "@BSSGP_Types.Application_Container_IE_NACC", NULL, &Application__Container__IE__NACC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Container__IE__NACC_rAN__Information__Request__Application__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Container__IE__NACC_rAN__Information__Application__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Container__IE__NACC_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Error__Container__NACC_erroneousApplicationContainer_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__NACC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Error__Container__NACC
const TTCN_Typedescriptor_t Application__Error__Container__NACC_descr_ = { "@BSSGP_Types.Application_Error_Container_NACC", NULL, &Application__Error__Container__NACC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__NACC_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__NACC_application__Error__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__NACC_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer_nacc_default_coding("RAW");
const TTCN_RAWdescriptor_t ApplContainer__or__ApplErrContainer__SI3_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ApplContainer__or__ApplErrContainer__SI3
const TTCN_Typedescriptor_t ApplContainer__or__ApplErrContainer__SI3_descr_ = { "@BSSGP_Types.ApplContainer_or_ApplErrContainer_SI3", NULL, &ApplContainer__or__ApplErrContainer__SI3_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       RAN__Information__Application__Container__SI3_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Application__Container__SI3_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Application__Container__SI3_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Application__Container__SI3_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Container__SI3_iEI_oer_ext_arr_, 0, RAN__Information__Application__Container__SI3_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SI3_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SI3.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__SI3_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__SI3_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SI3_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Application__Container__SI3_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Application__Container__SI3_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SI3_ext_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SI3.ext", &BITSTRING_ber_, &RAN__Information__Application__Container__SI3_ext_raw_, NULL, &RAN__Information__Application__Container__SI3_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__SI3_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SI3_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Container__SI3_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SI3_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SI3.lengthIndicator", NULL, &RAN__Information__Application__Container__SI3_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3_reporting__Cell__Identifier_default_coding("RAW");
const XERdescriptor_t       SI3_sI3MessageType_xer_ = { {"sI3MessageType>\n", "sI3MessageType>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SI3_sI3MessageType_oer_ext_arr_[0] = {};
const int SI3_sI3MessageType_oer_p_[0] = {};
const TTCN_OERdescriptor_t SI3_sI3MessageType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SI3_sI3MessageType_oer_ext_arr_, 0, SI3_sI3MessageType_oer_p_};
const TTCN_Typedescriptor_t SI3_sI3MessageType_descr_ = { "@BSSGP_Types.SI3.sI3MessageType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SI3_sI3MessageType_xer_, &OCTETSTRING_json_, &SI3_sI3MessageType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI3_sI3MessageType_default_coding("RAW");
const XERdescriptor_t       SI3_cellIdentity_xer_ = { {"cellIdentity>\n", "cellIdentity>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SI3_cellIdentity_oer_ext_arr_[0] = {};
const int SI3_cellIdentity_oer_p_[0] = {};
const TTCN_OERdescriptor_t SI3_cellIdentity_oer_ = { -1, TRUE, 2, FALSE, 0, 0, SI3_cellIdentity_oer_ext_arr_, 0, SI3_cellIdentity_oer_p_};
const TTCN_Typedescriptor_t SI3_cellIdentity_descr_ = { "@BSSGP_Types.SI3.cellIdentity", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &SI3_cellIdentity_xer_, &OCTETSTRING_json_, &SI3_cellIdentity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI3_cellIdentity_default_coding("RAW");
const XERdescriptor_t       LocationAreaIdentification_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t LocationAreaIdentification_mccDigit1_descr_ = { "@BSSGP_Types.LocationAreaIdentification.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &LocationAreaIdentification_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LocationAreaIdentification_mccDigit1_default_coding("RAW");
const XERdescriptor_t       LocationAreaIdentification_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t LocationAreaIdentification_mccDigit2_descr_ = { "@BSSGP_Types.LocationAreaIdentification.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &LocationAreaIdentification_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LocationAreaIdentification_mccDigit2_default_coding("RAW");
const XERdescriptor_t       LocationAreaIdentification_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t LocationAreaIdentification_mccDigit3_descr_ = { "@BSSGP_Types.LocationAreaIdentification.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &LocationAreaIdentification_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LocationAreaIdentification_mccDigit3_default_coding("RAW");
const XERdescriptor_t       LocationAreaIdentification_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t LocationAreaIdentification_mncDigit3_descr_ = { "@BSSGP_Types.LocationAreaIdentification.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &LocationAreaIdentification_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LocationAreaIdentification_mncDigit3_default_coding("RAW");
const XERdescriptor_t       LocationAreaIdentification_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t LocationAreaIdentification_mncDigit1_descr_ = { "@BSSGP_Types.LocationAreaIdentification.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &LocationAreaIdentification_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LocationAreaIdentification_mncDigit1_default_coding("RAW");
const XERdescriptor_t       LocationAreaIdentification_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t LocationAreaIdentification_mncDigit2_descr_ = { "@BSSGP_Types.LocationAreaIdentification.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &LocationAreaIdentification_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LocationAreaIdentification_mncDigit2_default_coding("RAW");
const XERdescriptor_t       LocationAreaIdentification_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int LocationAreaIdentification_lac_oer_ext_arr_[0] = {};
const int LocationAreaIdentification_lac_oer_p_[0] = {};
const TTCN_OERdescriptor_t LocationAreaIdentification_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, LocationAreaIdentification_lac_oer_ext_arr_, 0, LocationAreaIdentification_lac_oer_p_};
const TTCN_Typedescriptor_t LocationAreaIdentification_lac_descr_ = { "@BSSGP_Types.LocationAreaIdentification.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &LocationAreaIdentification_lac_xer_, &OCTETSTRING_json_, &LocationAreaIdentification_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LocationAreaIdentification_lac_default_coding("RAW");
const TTCN_RAWdescriptor_t LocationAreaIdentification_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for LocationAreaIdentification
const TTCN_Typedescriptor_t LocationAreaIdentification_descr_ = { "@BSSGP_Types.LocationAreaIdentification", NULL, &LocationAreaIdentification_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING LocationAreaIdentification_default_coding("RAW");
UNIVERSAL_CHARSTRING SI3_locationAreaIdentification_default_coding("RAW");
const XERdescriptor_t       ControlChannelDescription_cCCH__Conf_xer_ = { {"cCCH_Conf>\n", "cCCH_Conf>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ControlChannelDescription_cCCH__Conf_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ControlChannelDescription_cCCH__Conf_descr_ = { "@BSSGP_Types.ControlChannelDescription.cCCH_Conf", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ControlChannelDescription_cCCH__Conf_xer_, &BITSTRING_json_, &ControlChannelDescription_cCCH__Conf_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ControlChannelDescription_cCCH__Conf_default_coding("RAW");
const XERdescriptor_t       ControlChannelDescription_bS__AG__BLKS__RES_xer_ = { {"bS_AG_BLKS_RES>\n", "bS_AG_BLKS_RES>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ControlChannelDescription_bS__AG__BLKS__RES_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ControlChannelDescription_bS__AG__BLKS__RES_descr_ = { "@BSSGP_Types.ControlChannelDescription.bS_AG_BLKS_RES", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ControlChannelDescription_bS__AG__BLKS__RES_xer_, &BITSTRING_json_, &ControlChannelDescription_bS__AG__BLKS__RES_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ControlChannelDescription_bS__AG__BLKS__RES_default_coding("RAW");
const XERdescriptor_t       ControlChannelDescription_aTT_xer_ = { {"aTT>\n", "aTT>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ControlChannelDescription_aTT_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ControlChannelDescription_aTT_descr_ = { "@BSSGP_Types.ControlChannelDescription.aTT", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ControlChannelDescription_aTT_xer_, &BITSTRING_json_, &ControlChannelDescription_aTT_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ControlChannelDescription_aTT_default_coding("RAW");
const XERdescriptor_t       ControlChannelDescription_mSCR_xer_ = { {"mSCR>\n", "mSCR>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ControlChannelDescription_mSCR_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ControlChannelDescription_mSCR_descr_ = { "@BSSGP_Types.ControlChannelDescription.mSCR", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ControlChannelDescription_mSCR_xer_, &BITSTRING_json_, &ControlChannelDescription_mSCR_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ControlChannelDescription_mSCR_default_coding("RAW");
const XERdescriptor_t       ControlChannelDescription_bS__PA__MFRMS_xer_ = { {"bS_PA_MFRMS>\n", "bS_PA_MFRMS>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ControlChannelDescription_bS__PA__MFRMS_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ControlChannelDescription_bS__PA__MFRMS_descr_ = { "@BSSGP_Types.ControlChannelDescription.bS_PA_MFRMS", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ControlChannelDescription_bS__PA__MFRMS_xer_, &BITSTRING_json_, &ControlChannelDescription_bS__PA__MFRMS_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ControlChannelDescription_bS__PA__MFRMS_default_coding("RAW");
const XERdescriptor_t       ControlChannelDescription_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ControlChannelDescription_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ControlChannelDescription_spare1_descr_ = { "@BSSGP_Types.ControlChannelDescription.spare1", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &ControlChannelDescription_spare1_xer_, &BITSTRING_json_, &ControlChannelDescription_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ControlChannelDescription_spare1_default_coding("RAW");
const XERdescriptor_t       ControlChannelDescription_cBQ3_xer_ = { {"cBQ3>\n", "cBQ3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ControlChannelDescription_cBQ3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ControlChannelDescription_cBQ3_descr_ = { "@BSSGP_Types.ControlChannelDescription.cBQ3", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &ControlChannelDescription_cBQ3_xer_, &BITSTRING_json_, &ControlChannelDescription_cBQ3_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ControlChannelDescription_cBQ3_default_coding("RAW");
const XERdescriptor_t       ControlChannelDescription_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ControlChannelDescription_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ControlChannelDescription_spare2_descr_ = { "@BSSGP_Types.ControlChannelDescription.spare2", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ControlChannelDescription_spare2_xer_, &BITSTRING_json_, &ControlChannelDescription_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ControlChannelDescription_spare2_default_coding("RAW");
const XERdescriptor_t       ControlChannelDescription_t3212_xer_ = { {"t3212>\n", "t3212>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ControlChannelDescription_t3212_oer_ext_arr_[0] = {};
const int ControlChannelDescription_t3212_oer_p_[0] = {};
const TTCN_OERdescriptor_t ControlChannelDescription_t3212_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ControlChannelDescription_t3212_oer_ext_arr_, 0, ControlChannelDescription_t3212_oer_p_};
const TTCN_Typedescriptor_t ControlChannelDescription_t3212_descr_ = { "@BSSGP_Types.ControlChannelDescription.t3212", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ControlChannelDescription_t3212_xer_, &OCTETSTRING_json_, &ControlChannelDescription_t3212_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ControlChannelDescription_t3212_default_coding("RAW");
const TTCN_RAWdescriptor_t ControlChannelDescription_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ControlChannelDescription
const TTCN_Typedescriptor_t ControlChannelDescription_descr_ = { "@BSSGP_Types.ControlChannelDescription", NULL, &ControlChannelDescription_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ControlChannelDescription_default_coding("RAW");
UNIVERSAL_CHARSTRING SI3_controlChannelDescription_default_coding("RAW");
const XERdescriptor_t       CellOptions_radioLinkTimeout_xer_ = { {"radioLinkTimeout>\n", "radioLinkTimeout>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellOptions_radioLinkTimeout_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellOptions_radioLinkTimeout_descr_ = { "@BSSGP_Types.CellOptions.radioLinkTimeout", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &CellOptions_radioLinkTimeout_xer_, &BITSTRING_json_, &CellOptions_radioLinkTimeout_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellOptions_radioLinkTimeout_default_coding("RAW");
const XERdescriptor_t       CellOptions_dTX1_xer_ = { {"dTX1>\n", "dTX1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellOptions_dTX1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellOptions_dTX1_descr_ = { "@BSSGP_Types.CellOptions.dTX1", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &CellOptions_dTX1_xer_, &BITSTRING_json_, &CellOptions_dTX1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellOptions_dTX1_default_coding("RAW");
const XERdescriptor_t       CellOptions_pWRC_xer_ = { {"pWRC>\n", "pWRC>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellOptions_pWRC_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellOptions_pWRC_descr_ = { "@BSSGP_Types.CellOptions.pWRC", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CellOptions_pWRC_xer_, &BITSTRING_json_, &CellOptions_pWRC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellOptions_pWRC_default_coding("RAW");
const XERdescriptor_t       CellOptions_dtx2_xer_ = { {"dtx2>\n", "dtx2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellOptions_dtx2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellOptions_dtx2_descr_ = { "@BSSGP_Types.CellOptions.dtx2", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CellOptions_dtx2_xer_, &BITSTRING_json_, &CellOptions_dtx2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellOptions_dtx2_default_coding("RAW");
const TTCN_RAWdescriptor_t CellOptions_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for CellOptions
const TTCN_Typedescriptor_t CellOptions_descr_ = { "@BSSGP_Types.CellOptions", NULL, &CellOptions_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellOptions_default_coding("RAW");
UNIVERSAL_CHARSTRING SI3_cellOptions_default_coding("RAW");
const XERdescriptor_t       CellSelectionParameters_mS__TXPWR__MAX__CCH_xer_ = { {"mS_TXPWR_MAX_CCH>\n", "mS_TXPWR_MAX_CCH>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelectionParameters_mS__TXPWR__MAX__CCH_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelectionParameters_mS__TXPWR__MAX__CCH_descr_ = { "@BSSGP_Types.CellSelectionParameters.mS_TXPWR_MAX_CCH", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &CellSelectionParameters_mS__TXPWR__MAX__CCH_xer_, &BITSTRING_json_, &CellSelectionParameters_mS__TXPWR__MAX__CCH_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelectionParameters_mS__TXPWR__MAX__CCH_default_coding("RAW");
const XERdescriptor_t       CellSelectionParameters_cellReselectHysterisis_xer_ = { {"cellReselectHysterisis>\n", "cellReselectHysterisis>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelectionParameters_cellReselectHysterisis_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelectionParameters_cellReselectHysterisis_descr_ = { "@BSSGP_Types.CellSelectionParameters.cellReselectHysterisis", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &CellSelectionParameters_cellReselectHysterisis_xer_, &BITSTRING_json_, &CellSelectionParameters_cellReselectHysterisis_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelectionParameters_cellReselectHysterisis_default_coding("RAW");
const XERdescriptor_t       CellSelectionParameters_rXLEV__Access__Min_xer_ = { {"rXLEV_Access_Min>\n", "rXLEV_Access_Min>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelectionParameters_rXLEV__Access__Min_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelectionParameters_rXLEV__Access__Min_descr_ = { "@BSSGP_Types.CellSelectionParameters.rXLEV_Access_Min", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &CellSelectionParameters_rXLEV__Access__Min_xer_, &BITSTRING_json_, &CellSelectionParameters_rXLEV__Access__Min_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelectionParameters_rXLEV__Access__Min_default_coding("RAW");
const XERdescriptor_t       CellSelectionParameters_nECI_xer_ = { {"nECI>\n", "nECI>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelectionParameters_nECI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelectionParameters_nECI_descr_ = { "@BSSGP_Types.CellSelectionParameters.nECI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CellSelectionParameters_nECI_xer_, &BITSTRING_json_, &CellSelectionParameters_nECI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelectionParameters_nECI_default_coding("RAW");
const XERdescriptor_t       CellSelectionParameters_aCS_xer_ = { {"aCS>\n", "aCS>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CellSelectionParameters_aCS_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CellSelectionParameters_aCS_descr_ = { "@BSSGP_Types.CellSelectionParameters.aCS", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CellSelectionParameters_aCS_xer_, &BITSTRING_json_, &CellSelectionParameters_aCS_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelectionParameters_aCS_default_coding("RAW");
const TTCN_RAWdescriptor_t CellSelectionParameters_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for CellSelectionParameters
const TTCN_Typedescriptor_t CellSelectionParameters_descr_ = { "@BSSGP_Types.CellSelectionParameters", NULL, &CellSelectionParameters_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CellSelectionParameters_default_coding("RAW");
UNIVERSAL_CHARSTRING SI3_cellSelectionParameters_default_coding("RAW");
const XERdescriptor_t       RACHControlParameters_rE_xer_ = { {"rE>\n", "rE>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RACHControlParameters_rE_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RACHControlParameters_rE_descr_ = { "@BSSGP_Types.RACHControlParameters.rE", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &RACHControlParameters_rE_xer_, &BITSTRING_json_, &RACHControlParameters_rE_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RACHControlParameters_rE_default_coding("RAW");
const XERdescriptor_t       RACHControlParameters_cellBarrAccess_xer_ = { {"cellBarrAccess>\n", "cellBarrAccess>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RACHControlParameters_cellBarrAccess_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RACHControlParameters_cellBarrAccess_descr_ = { "@BSSGP_Types.RACHControlParameters.cellBarrAccess", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &RACHControlParameters_cellBarrAccess_xer_, &BITSTRING_json_, &RACHControlParameters_cellBarrAccess_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RACHControlParameters_cellBarrAccess_default_coding("RAW");
const XERdescriptor_t       RACHControlParameters_tX__Integer_xer_ = { {"tX_Integer>\n", "tX_Integer>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RACHControlParameters_tX__Integer_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RACHControlParameters_tX__Integer_descr_ = { "@BSSGP_Types.RACHControlParameters.tX_Integer", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RACHControlParameters_tX__Integer_xer_, &BITSTRING_json_, &RACHControlParameters_tX__Integer_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RACHControlParameters_tX__Integer_default_coding("RAW");
const XERdescriptor_t       RACHControlParameters_maxRetrans_xer_ = { {"maxRetrans>\n", "maxRetrans>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RACHControlParameters_maxRetrans_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RACHControlParameters_maxRetrans_descr_ = { "@BSSGP_Types.RACHControlParameters.maxRetrans", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &RACHControlParameters_maxRetrans_xer_, &BITSTRING_json_, &RACHControlParameters_maxRetrans_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RACHControlParameters_maxRetrans_default_coding("RAW");
const XERdescriptor_t       RACHControlParameters_aC__15__to__8_xer_ = { {"aC_15_to_8>\n", "aC_15_to_8>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RACHControlParameters_aC__15__to__8_oer_ext_arr_[0] = {};
const int RACHControlParameters_aC__15__to__8_oer_p_[0] = {};
const TTCN_OERdescriptor_t RACHControlParameters_aC__15__to__8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RACHControlParameters_aC__15__to__8_oer_ext_arr_, 0, RACHControlParameters_aC__15__to__8_oer_p_};
const TTCN_Typedescriptor_t RACHControlParameters_aC__15__to__8_descr_ = { "@BSSGP_Types.RACHControlParameters.aC_15_to_8", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RACHControlParameters_aC__15__to__8_xer_, &OCTETSTRING_json_, &RACHControlParameters_aC__15__to__8_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RACHControlParameters_aC__15__to__8_default_coding("RAW");
const XERdescriptor_t       RACHControlParameters_aC__7__to__0_xer_ = { {"aC_7_to_0>\n", "aC_7_to_0>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RACHControlParameters_aC__7__to__0_oer_ext_arr_[0] = {};
const int RACHControlParameters_aC__7__to__0_oer_p_[0] = {};
const TTCN_OERdescriptor_t RACHControlParameters_aC__7__to__0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RACHControlParameters_aC__7__to__0_oer_ext_arr_, 0, RACHControlParameters_aC__7__to__0_oer_p_};
const TTCN_Typedescriptor_t RACHControlParameters_aC__7__to__0_descr_ = { "@BSSGP_Types.RACHControlParameters.aC_7_to_0", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RACHControlParameters_aC__7__to__0_xer_, &OCTETSTRING_json_, &RACHControlParameters_aC__7__to__0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RACHControlParameters_aC__7__to__0_default_coding("RAW");
const TTCN_RAWdescriptor_t RACHControlParameters_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RACHControlParameters
const TTCN_Typedescriptor_t RACHControlParameters_descr_ = { "@BSSGP_Types.RACHControlParameters", NULL, &RACHControlParameters_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RACHControlParameters_default_coding("RAW");
UNIVERSAL_CHARSTRING SI3_rACHControlParameters_default_coding("RAW");
const XERdescriptor_t       SI3_sI3RestOctets_xer_ = { {"sI3RestOctets>\n", "sI3RestOctets>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SI3_sI3RestOctets_oer_ext_arr_[0] = {};
const int SI3_sI3RestOctets_oer_p_[0] = {};
const TTCN_OERdescriptor_t SI3_sI3RestOctets_oer_ = { -1, TRUE, 4, FALSE, 0, 0, SI3_sI3RestOctets_oer_ext_arr_, 0, SI3_sI3RestOctets_oer_p_};
const TTCN_Typedescriptor_t SI3_sI3RestOctets_descr_ = { "@BSSGP_Types.SI3.sI3RestOctets", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &SI3_sI3RestOctets_xer_, &OCTETSTRING_json_, &SI3_sI3RestOctets_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI3_sI3RestOctets_default_coding("RAW");
const TTCN_RAWdescriptor_t SI3_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SI3
const TTCN_Typedescriptor_t SI3_descr_ = { "@BSSGP_Types.SI3", NULL, &SI3_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI3_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3_sI3_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SI3_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Container__SI3
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SI3_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SI3", NULL, &RAN__Information__Application__Container__SI3_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SI3_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__SI3_application__Container_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__SI3_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Application__Error__Container__SI3_iEI_oer_ext_arr_[0] = {};
const int Application__Error__Container__SI3_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Application__Error__Container__SI3_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__SI3_iEI_oer_ext_arr_, 0, Application__Error__Container__SI3_iEI_oer_p_};
const TTCN_Typedescriptor_t Application__Error__Container__SI3_iEI_descr_ = { "@BSSGP_Types.Application_Error_Container_SI3.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__SI3_iEI_xer_, &OCTETSTRING_json_, &Application__Error__Container__SI3_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__SI3_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__SI3_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Application__Error__Container__SI3_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Application__Error__Container__SI3_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Application__Error__Container__SI3_ext_descr_ = { "@BSSGP_Types.Application_Error_Container_SI3.ext", &BITSTRING_ber_, &Application__Error__Container__SI3_ext_raw_, NULL, &Application__Error__Container__SI3_ext_xer_, &BITSTRING_json_, &Application__Error__Container__SI3_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__SI3_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__SI3_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Error__Container__SI3_lengthIndicator
const TTCN_Typedescriptor_t Application__Error__Container__SI3_lengthIndicator_descr_ = { "@BSSGP_Types.Application_Error_Container_SI3.lengthIndicator", NULL, &Application__Error__Container__SI3_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__SI3_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__SI3_sI3__cause_xer_ = { {"sI3_cause>\n", "sI3_cause>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Application__Error__Container__SI3_sI3__cause_oer_ext_arr_[0] = {};
const int Application__Error__Container__SI3_sI3__cause_oer_p_[0] = {};
const TTCN_OERdescriptor_t Application__Error__Container__SI3_sI3__cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__SI3_sI3__cause_oer_ext_arr_, 0, Application__Error__Container__SI3_sI3__cause_oer_p_};
const TTCN_Typedescriptor_t Application__Error__Container__SI3_sI3__cause_descr_ = { "@BSSGP_Types.Application_Error_Container_SI3.sI3_cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__SI3_sI3__cause_xer_, &OCTETSTRING_json_, &Application__Error__Container__SI3_sI3__cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__SI3_sI3__cause_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Container__IE__SI3_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Container__IE__SI3
const TTCN_Typedescriptor_t Application__Container__IE__SI3_descr_ = { "@BSSGP_Types.Application_Container_IE_SI3", NULL, &Application__Container__IE__SI3_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Container__IE__SI3_rAN__Information__Request__Application__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Container__IE__SI3_rAN__Information__Application__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Container__IE__SI3_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Error__Container__SI3_erroneousApplicationContainer_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__SI3_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Error__Container__SI3
const TTCN_Typedescriptor_t Application__Error__Container__SI3_descr_ = { "@BSSGP_Types.Application_Error_Container_SI3", NULL, &Application__Error__Container__SI3_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__SI3_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__SI3_application__Error__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__SI3_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer_si3_default_coding("RAW");
const TTCN_RAWdescriptor_t ApplContainer__or__ApplErrContainer__MBMS__data__channel_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ApplContainer__or__ApplErrContainer__MBMS__data__channel
const TTCN_Typedescriptor_t ApplContainer__or__ApplErrContainer__MBMS__data__channel_descr_ = { "@BSSGP_Types.ApplContainer_or_ApplErrContainer_MBMS_data_channel", NULL, &ApplContainer__or__ApplErrContainer__MBMS__data__channel_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       RAN__Information__Application__Container__MBMS__data__channel_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Application__Container__MBMS__data__channel_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Application__Container__MBMS__data__channel_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Application__Container__MBMS__data__channel_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Container__MBMS__data__channel_iEI_oer_ext_arr_, 0, RAN__Information__Application__Container__MBMS__data__channel_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Application__Container__MBMS__data__channel_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_MBMS_data_channel.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__MBMS__data__channel_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__MBMS__data__channel_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__data__channel_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__MBMS__data__channel_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Application__Container__MBMS__data__channel_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Application__Container__MBMS__data__channel_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Application__Container__MBMS__data__channel_ext_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_MBMS_data_channel.ext", &BITSTRING_ber_, &RAN__Information__Application__Container__MBMS__data__channel_ext_raw_, NULL, &RAN__Information__Application__Container__MBMS__data__channel_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__MBMS__data__channel_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__data__channel_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__MBMS__data__channel_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Container__MBMS__data__channel_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Application__Container__MBMS__data__channel_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_MBMS_data_channel.lengthIndicator", NULL, &RAN__Information__Application__Container__MBMS__data__channel_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__data__channel_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__data__channel_reporting__Cell__Identifier_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Container__MBMS__data__channel_mBMS__data__channel__report_xer_ = { {"mBMS_data_channel_report>\n", "mBMS_data_channel_report>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Application__Container__MBMS__data__channel_mBMS__data__channel__report_oer_ext_arr_[0] = {};
const int RAN__Information__Application__Container__MBMS__data__channel_mBMS__data__channel__report_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Application__Container__MBMS__data__channel_mBMS__data__channel__report_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAN__Information__Application__Container__MBMS__data__channel_mBMS__data__channel__report_oer_ext_arr_, 0, RAN__Information__Application__Container__MBMS__data__channel_mBMS__data__channel__report_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Application__Container__MBMS__data__channel_mBMS__data__channel__report_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_MBMS_data_channel.mBMS_data_channel_report", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__MBMS__data__channel_mBMS__data__channel__report_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__MBMS__data__channel_mBMS__data__channel__report_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__data__channel_mBMS__data__channel__report_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__MBMS__data__channel_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Container__MBMS__data__channel
const TTCN_Typedescriptor_t RAN__Information__Application__Container__MBMS__data__channel_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_MBMS_data_channel", NULL, &RAN__Information__Application__Container__MBMS__data__channel_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__MBMS__data__channel_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__MBMS__data__channel_application__Container_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__MBMS__data__channel_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Application__Error__Container__MBMS__data__channel_iEI_oer_ext_arr_[0] = {};
const int Application__Error__Container__MBMS__data__channel_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Application__Error__Container__MBMS__data__channel_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__MBMS__data__channel_iEI_oer_ext_arr_, 0, Application__Error__Container__MBMS__data__channel_iEI_oer_p_};
const TTCN_Typedescriptor_t Application__Error__Container__MBMS__data__channel_iEI_descr_ = { "@BSSGP_Types.Application_Error_Container_MBMS_data_channel.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__MBMS__data__channel_iEI_xer_, &OCTETSTRING_json_, &Application__Error__Container__MBMS__data__channel_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__data__channel_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__MBMS__data__channel_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Application__Error__Container__MBMS__data__channel_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Application__Error__Container__MBMS__data__channel_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Application__Error__Container__MBMS__data__channel_ext_descr_ = { "@BSSGP_Types.Application_Error_Container_MBMS_data_channel.ext", &BITSTRING_ber_, &Application__Error__Container__MBMS__data__channel_ext_raw_, NULL, &Application__Error__Container__MBMS__data__channel_ext_xer_, &BITSTRING_json_, &Application__Error__Container__MBMS__data__channel_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__data__channel_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__MBMS__data__channel_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Error__Container__MBMS__data__channel_lengthIndicator
const TTCN_Typedescriptor_t Application__Error__Container__MBMS__data__channel_lengthIndicator_descr_ = { "@BSSGP_Types.Application_Error_Container_MBMS_data_channel.lengthIndicator", NULL, &Application__Error__Container__MBMS__data__channel_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__data__channel_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__MBMS__data__channel_mBMS__data__channel__cause_xer_ = { {"mBMS_data_channel_cause>\n", "mBMS_data_channel_cause>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Application__Error__Container__MBMS__data__channel_mBMS__data__channel__cause_oer_ext_arr_[0] = {};
const int Application__Error__Container__MBMS__data__channel_mBMS__data__channel__cause_oer_p_[0] = {};
const TTCN_OERdescriptor_t Application__Error__Container__MBMS__data__channel_mBMS__data__channel__cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__MBMS__data__channel_mBMS__data__channel__cause_oer_ext_arr_, 0, Application__Error__Container__MBMS__data__channel_mBMS__data__channel__cause_oer_p_};
const TTCN_Typedescriptor_t Application__Error__Container__MBMS__data__channel_mBMS__data__channel__cause_descr_ = { "@BSSGP_Types.Application_Error_Container_MBMS_data_channel.mBMS_data_channel_cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__MBMS__data__channel_mBMS__data__channel__cause_xer_, &OCTETSTRING_json_, &Application__Error__Container__MBMS__data__channel_mBMS__data__channel__cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__data__channel_mBMS__data__channel__cause_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Container__IE__MBMS__data__channel_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Container__IE__MBMS__data__channel
const TTCN_Typedescriptor_t Application__Container__IE__MBMS__data__channel_descr_ = { "@BSSGP_Types.Application_Container_IE_MBMS_data_channel", NULL, &Application__Container__IE__MBMS__data__channel_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Container__IE__MBMS__data__channel_rAN__Information__Request__Application__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Container__IE__MBMS__data__channel_rAN__Information__Application__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Container__IE__MBMS__data__channel_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__data__channel_erroneousApplicationContainer_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__MBMS__data__channel_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Error__Container__MBMS__data__channel
const TTCN_Typedescriptor_t Application__Error__Container__MBMS__data__channel_descr_ = { "@BSSGP_Types.Application_Error_Container_MBMS_data_channel", NULL, &Application__Error__Container__MBMS__data__channel_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__MBMS__data__channel_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__MBMS__data__channel_application__Error__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer__MBMS__data__channel_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer_mBMS__data__channel_default_coding("RAW");
UNIVERSAL_CHARSTRING ApplContainer__or__ApplErrContainer_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__RIM__Container_applContainer__or__ApplErrContainer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__RIM__Container_applContainer__or__ApplErrContainer
const TTCN_Typedescriptor_t RAN__Information__RIM__Container_applContainer__or__ApplErrContainer_descr_ = { "@BSSGP_Types.RAN_Information_RIM_Container.applContainer_or_ApplErrContainer", NULL, &RAN__Information__RIM__Container_applContainer__or__ApplErrContainer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__RIM__Container_applContainer__or__ApplErrContainer_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__RIM__Container_sON__Transfer__Application__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__RIM__Container_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Ack__RIM__Container_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Ack__RIM__Container_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Ack__RIM__Container_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Ack__RIM__Container_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Ack__RIM__Container_iEI_oer_ext_arr_, 0, RAN__Information__Ack__RIM__Container_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Ack__RIM__Container_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Ack_RIM_Container.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Ack__RIM__Container_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Ack__RIM__Container_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Ack__RIM__Container_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Ack__RIM__Container_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Ack__RIM__Container_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Ack__RIM__Container_ext_descr_ = { "@BSSGP_Types.RAN_Information_Ack_RIM_Container.ext", &BITSTRING_ber_, &RAN__Information__Ack__RIM__Container_ext_raw_, NULL, &RAN__Information__Ack__RIM__Container_ext_xer_, &BITSTRING_json_, &RAN__Information__Ack__RIM__Container_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Ack__RIM__Container_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Ack__RIM__Container_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Ack__RIM__Container_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Ack_RIM_Container.lengthIndicator", NULL, &RAN__Information__Ack__RIM__Container_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container_rIM__Application__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container_rIM__Sequence__Number_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Ack__RIM__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Ack__RIM__Container
const TTCN_Typedescriptor_t RAN__Information__Ack__RIM__Container_descr_ = { "@BSSGP_Types.RAN_Information_Ack_RIM_Container", NULL, &RAN__Information__Ack__RIM__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container_rIM__Protocol__Version__Number_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container_sON__Transfer__Application__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Ack__RIM__Container_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Error__RIM__Container_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Error__RIM__Container_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Error__RIM__Container_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Error__RIM__Container_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Error__RIM__Container_iEI_oer_ext_arr_, 0, RAN__Information__Error__RIM__Container_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Error__RIM__Container_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Error_RIM_Container.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Error__RIM__Container_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Error__RIM__Container_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Error__RIM__Container_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Error__RIM__Container_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Error__RIM__Container_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Error__RIM__Container_ext_descr_ = { "@BSSGP_Types.RAN_Information_Error_RIM_Container.ext", &BITSTRING_ber_, &RAN__Information__Error__RIM__Container_ext_raw_, NULL, &RAN__Information__Error__RIM__Container_ext_xer_, &BITSTRING_json_, &RAN__Information__Error__RIM__Container_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Error__RIM__Container_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Error__RIM__Container_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Error__RIM__Container_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Error_RIM_Container.lengthIndicator", NULL, &RAN__Information__Error__RIM__Container_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container_rIM__Application__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container_rIM__cause_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container_pDU__in__Error_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Error__RIM__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Error__RIM__Container
const TTCN_Typedescriptor_t RAN__Information__Error__RIM__Container_descr_ = { "@BSSGP_Types.RAN_Information_Error_RIM_Container", NULL, &RAN__Information__Error__RIM__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container_rIM__Protocol__Version__Number_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container_sON__Transfer__Application__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Error__RIM__Container_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Error__RIM__Container_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Application__Error__RIM__Container_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Application__Error__RIM__Container_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Application__Error__RIM__Container_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Error__RIM__Container_iEI_oer_ext_arr_, 0, RAN__Information__Application__Error__RIM__Container_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Application_Error_RIM_Container.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Error__RIM__Container_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Error__RIM__Container_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Error__RIM__Container_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Application__Error__RIM__Container_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Application__Error__RIM__Container_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container_ext_descr_ = { "@BSSGP_Types.RAN_Information_Application_Error_RIM_Container.ext", &BITSTRING_ber_, &RAN__Information__Application__Error__RIM__Container_ext_raw_, NULL, &RAN__Information__Application__Error__RIM__Container_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Error__RIM__Container_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Error__RIM__Container_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Error__RIM__Container_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Application_Error_RIM_Container.lengthIndicator", NULL, &RAN__Information__Application__Error__RIM__Container_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container_rIM__Application__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container_rIM__Sequence__Number_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container_rIM__PDU__Indications_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Error__Container
const TTCN_Typedescriptor_t Application__Error__Container_descr_ = { "@BSSGP_Types.Application_Error_Container", NULL, &Application__Error__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container_nacc_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Error__Container_si3_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Error__Container_mBMS__data__channel_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Error__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Error__RIM__Container_application__Error__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Error__RIM__Container_application__Error__Container
const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container_application__Error__Container_descr_ = { "@BSSGP_Types.RAN_Information_Application_Error_RIM_Container.application_Error_Container", NULL, &RAN__Information__Application__Error__RIM__Container_application__Error__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container_application__Error__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Error__RIM__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Error__RIM__Container
const TTCN_Typedescriptor_t RAN__Information__Application__Error__RIM__Container_descr_ = { "@BSSGP_Types.RAN_Information_Application_Error_RIM_Container", NULL, &RAN__Information__Application__Error__RIM__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container_rIM__Protocol__Version__Number_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container_sON__Transfer__Application__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Error__RIM__Container_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Request__Application__Container__SON__transfer_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Request__Application__Container__SON__transfer_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Request__Application__Container__SON__transfer_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__SON__transfer_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__Application__Container__SON__transfer_iEI_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__SON__transfer_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SON__transfer_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_SON_transfer.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__SON__transfer_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__SON__transfer_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__transfer_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SON__transfer_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Request__Application__Container__SON__transfer_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__SON__transfer_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SON__transfer_ext_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_SON_transfer.ext", &BITSTRING_ber_, &RAN__Information__Request__Application__Container__SON__transfer_ext_raw_, NULL, &RAN__Information__Request__Application__Container__SON__transfer_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__Application__Container__SON__transfer_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__transfer_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SON__transfer_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container__SON__transfer_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SON__transfer_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_SON_transfer.lengthIndicator", NULL, &RAN__Information__Request__Application__Container__SON__transfer_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__transfer_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__transfer_reporting__Cell__Identifier_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Request__Application__Container__SON__transfer_sON__Transfer__Request__Container_xer_ = { {"sON_Transfer_Request_Container>\n", "sON_Transfer_Request_Container>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Request__Application__Container__SON__transfer_sON__Transfer__Request__Container_oer_ext_arr_[0] = {};
const int RAN__Information__Request__Application__Container__SON__transfer_sON__Transfer__Request__Container_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__SON__transfer_sON__Transfer__Request__Container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAN__Information__Request__Application__Container__SON__transfer_sON__Transfer__Request__Container_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__SON__transfer_sON__Transfer__Request__Container_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SON__transfer_sON__Transfer__Request__Container_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_SON_transfer.sON_Transfer_Request_Container", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__SON__transfer_sON__Transfer__Request__Container_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__SON__transfer_sON__Transfer__Request__Container_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__transfer_sON__Transfer__Request__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__SON__transfer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container__SON__transfer
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__SON__transfer_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_SON_transfer", NULL, &RAN__Information__Request__Application__Container__SON__transfer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__SON__transfer_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Request__Application__Container__UTRA__SI_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Request__Application__Container__UTRA__SI_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Request__Application__Container__UTRA__SI_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Request__Application__Container__UTRA__SI_iEI_oer_ext_arr_, 0, RAN__Information__Request__Application__Container__UTRA__SI_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__UTRA__SI_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_UTRA_SI.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Request__Application__Container__UTRA__SI_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Request__Application__Container__UTRA__SI_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__UTRA__SI_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Request__Application__Container__UTRA__SI_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__UTRA__SI_ext_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_UTRA_SI.ext", &BITSTRING_ber_, &RAN__Information__Request__Application__Container__UTRA__SI_ext_raw_, NULL, &RAN__Information__Request__Application__Container__UTRA__SI_ext_xer_, &BITSTRING_json_, &RAN__Information__Request__Application__Container__UTRA__SI_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__UTRA__SI_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container__UTRA__SI_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__UTRA__SI_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_UTRA_SI.lengthIndicator", NULL, &RAN__Information__Request__Application__Container__UTRA__SI_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__UTRA__SI_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__UTRA__SI_reporting__Cell__Identifier_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Request__Application__Container__UTRA__SI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Request__Application__Container__UTRA__SI
const TTCN_Typedescriptor_t RAN__Information__Request__Application__Container__UTRA__SI_descr_ = { "@BSSGP_Types.RAN_Information_Request_Application_Container_UTRA_SI", NULL, &RAN__Information__Request__Application__Container__UTRA__SI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Request__Application__Container__UTRA__SI_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Container__SON__transfer_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Application__Container__SON__transfer_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Application__Container__SON__transfer_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Application__Container__SON__transfer_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Container__SON__transfer_iEI_oer_ext_arr_, 0, RAN__Information__Application__Container__SON__transfer_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__transfer_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SON_transfer.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__SON__transfer_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__SON__transfer_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__transfer_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SON__transfer_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Application__Container__SON__transfer_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Application__Container__SON__transfer_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__transfer_ext_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SON_transfer.ext", &BITSTRING_ber_, &RAN__Information__Application__Container__SON__transfer_ext_raw_, NULL, &RAN__Information__Application__Container__SON__transfer_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__SON__transfer_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__transfer_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SON__transfer_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Container__SON__transfer_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__transfer_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SON_transfer.lengthIndicator", NULL, &RAN__Information__Application__Container__SON__transfer_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__transfer_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Container__SON__transfer_rAT__Discriminator_xer_ = { {"rAT_Discriminator>\n", "rAT_Discriminator>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Application__Container__SON__transfer_rAT__Discriminator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__transfer_rAT__Discriminator_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SON_transfer.rAT_Discriminator", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RAN__Information__Application__Container__SON__transfer_rAT__Discriminator_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__SON__transfer_rAT__Discriminator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__transfer_rAT__Discriminator_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Container__SON__transfer_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Application__Container__SON__transfer_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__transfer_spare_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SON_transfer.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &RAN__Information__Application__Container__SON__transfer_spare_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__SON__transfer_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__transfer_spare_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__transfer_reporting__Cell__Identifier_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Container__SON__transfer_sON__Transfer__Response__Container_xer_ = { {"sON_Transfer_Response_Container>\n", "sON_Transfer_Response_Container>\n"}, {33, 33}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Application__Container__SON__transfer_sON__Transfer__Response__Container_oer_ext_arr_[0] = {};
const int RAN__Information__Application__Container__SON__transfer_sON__Transfer__Response__Container_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Application__Container__SON__transfer_sON__Transfer__Response__Container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAN__Information__Application__Container__SON__transfer_sON__Transfer__Response__Container_oer_ext_arr_, 0, RAN__Information__Application__Container__SON__transfer_sON__Transfer__Response__Container_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__transfer_sON__Transfer__Response__Container_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SON_transfer.sON_Transfer_Response_Container", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__SON__transfer_sON__Transfer__Response__Container_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__SON__transfer_sON__Transfer__Response__Container_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__transfer_sON__Transfer__Response__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__SON__transfer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Container__SON__transfer
const TTCN_Typedescriptor_t RAN__Information__Application__Container__SON__transfer_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_SON_transfer", NULL, &RAN__Information__Application__Container__SON__transfer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__SON__transfer_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Container__UTRA__SI_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Application__Container__UTRA__SI_iEI_oer_ext_arr_[0] = {};
const int RAN__Information__Application__Container__UTRA__SI_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Application__Container__UTRA__SI_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAN__Information__Application__Container__UTRA__SI_iEI_oer_ext_arr_, 0, RAN__Information__Application__Container__UTRA__SI_iEI_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Application__Container__UTRA__SI_iEI_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_UTRA_SI.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__UTRA__SI_iEI_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__UTRA__SI_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__UTRA__SI_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RAN__Information__Application__Container__UTRA__SI_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RAN__Information__Application__Container__UTRA__SI_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RAN__Information__Application__Container__UTRA__SI_ext_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_UTRA_SI.ext", &BITSTRING_ber_, &RAN__Information__Application__Container__UTRA__SI_ext_raw_, NULL, &RAN__Information__Application__Container__UTRA__SI_ext_xer_, &BITSTRING_json_, &RAN__Information__Application__Container__UTRA__SI_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__UTRA__SI_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Container__UTRA__SI_lengthIndicator
const TTCN_Typedescriptor_t RAN__Information__Application__Container__UTRA__SI_lengthIndicator_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_UTRA_SI.lengthIndicator", NULL, &RAN__Information__Application__Container__UTRA__SI_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI_reporting__Cell__Identifier_default_coding("RAW");
const XERdescriptor_t       RAN__Information__Application__Container__UTRA__SI_uTRA__SI__Container_xer_ = { {"uTRA_SI_Container>\n", "uTRA_SI_Container>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RAN__Information__Application__Container__UTRA__SI_uTRA__SI__Container_oer_ext_arr_[0] = {};
const int RAN__Information__Application__Container__UTRA__SI_uTRA__SI__Container_oer_p_[0] = {};
const TTCN_OERdescriptor_t RAN__Information__Application__Container__UTRA__SI_uTRA__SI__Container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAN__Information__Application__Container__UTRA__SI_uTRA__SI__Container_oer_ext_arr_, 0, RAN__Information__Application__Container__UTRA__SI_uTRA__SI__Container_oer_p_};
const TTCN_Typedescriptor_t RAN__Information__Application__Container__UTRA__SI_uTRA__SI__Container_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_UTRA_SI.uTRA_SI_Container", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RAN__Information__Application__Container__UTRA__SI_uTRA__SI__Container_xer_, &OCTETSTRING_json_, &RAN__Information__Application__Container__UTRA__SI_uTRA__SI__Container_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI_uTRA__SI__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t RAN__Information__Application__Container__UTRA__SI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RAN__Information__Application__Container__UTRA__SI
const TTCN_Typedescriptor_t RAN__Information__Application__Container__UTRA__SI_descr_ = { "@BSSGP_Types.RAN_Information_Application_Container_UTRA_SI", NULL, &RAN__Information__Application__Container__UTRA__SI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RAN__Information__Application__Container__UTRA__SI_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__SON__transfer_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Application__Error__Container__SON__transfer_iEI_oer_ext_arr_[0] = {};
const int Application__Error__Container__SON__transfer_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Application__Error__Container__SON__transfer_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__SON__transfer_iEI_oer_ext_arr_, 0, Application__Error__Container__SON__transfer_iEI_oer_p_};
const TTCN_Typedescriptor_t Application__Error__Container__SON__transfer_iEI_descr_ = { "@BSSGP_Types.Application_Error_Container_SON_transfer.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__SON__transfer_iEI_xer_, &OCTETSTRING_json_, &Application__Error__Container__SON__transfer_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__SON__transfer_iEI_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__SON__transfer_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Application__Error__Container__SON__transfer_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Application__Error__Container__SON__transfer_ext_descr_ = { "@BSSGP_Types.Application_Error_Container_SON_transfer.ext", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Application__Error__Container__SON__transfer_ext_xer_, &BITSTRING_json_, &Application__Error__Container__SON__transfer_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__SON__transfer_ext_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Error__Container__SON__transfer_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__SON__transfer_sON__transfer__cause_xer_ = { {"sON_transfer_cause>\n", "sON_transfer_cause>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Application__Error__Container__SON__transfer_sON__transfer__cause_oer_ext_arr_[0] = {};
const int Application__Error__Container__SON__transfer_sON__transfer__cause_oer_p_[0] = {};
const TTCN_OERdescriptor_t Application__Error__Container__SON__transfer_sON__transfer__cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__SON__transfer_sON__transfer__cause_oer_ext_arr_, 0, Application__Error__Container__SON__transfer_sON__transfer__cause_oer_p_};
const TTCN_Typedescriptor_t Application__Error__Container__SON__transfer_sON__transfer__cause_descr_ = { "@BSSGP_Types.Application_Error_Container_SON_transfer.sON_transfer_cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__SON__transfer_sON__transfer__cause_xer_, &OCTETSTRING_json_, &Application__Error__Container__SON__transfer_sON__transfer__cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__SON__transfer_sON__transfer__cause_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Container__IE__SON__transfer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Container__IE__SON__transfer
const TTCN_Typedescriptor_t Application__Container__IE__SON__transfer_descr_ = { "@BSSGP_Types.Application_Container_IE_SON_transfer", NULL, &Application__Container__IE__SON__transfer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Container__IE__SON__transfer_rAN__Information__Request__Application__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Container__IE__SON__transfer_rAN__Information__Application__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Container__IE__SON__transfer_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Error__Container__SON__transfer_erroneousApplicationContainer_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__SON__transfer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Error__Container__SON__transfer
const TTCN_Typedescriptor_t Application__Error__Container__SON__transfer_descr_ = { "@BSSGP_Types.Application_Error_Container_SON_transfer", NULL, &Application__Error__Container__SON__transfer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__SON__transfer_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__UTRA__SI_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Application__Error__Container__UTRA__SI_iEI_oer_ext_arr_[0] = {};
const int Application__Error__Container__UTRA__SI_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Application__Error__Container__UTRA__SI_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__UTRA__SI_iEI_oer_ext_arr_, 0, Application__Error__Container__UTRA__SI_iEI_oer_p_};
const TTCN_Typedescriptor_t Application__Error__Container__UTRA__SI_iEI_descr_ = { "@BSSGP_Types.Application_Error_Container_UTRA_SI.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__UTRA__SI_iEI_xer_, &OCTETSTRING_json_, &Application__Error__Container__UTRA__SI_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI_iEI_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__UTRA__SI_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Application__Error__Container__UTRA__SI_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Application__Error__Container__UTRA__SI_ext_descr_ = { "@BSSGP_Types.Application_Error_Container_UTRA_SI.ext", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Application__Error__Container__UTRA__SI_ext_xer_, &BITSTRING_json_, &Application__Error__Container__UTRA__SI_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI_ext_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Application__Error__Container__UTRA__SI_uTRA__SI__cause_xer_ = { {"uTRA_SI_cause>\n", "uTRA_SI_cause>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Application__Error__Container__UTRA__SI_uTRA__SI__cause_oer_ext_arr_[0] = {};
const int Application__Error__Container__UTRA__SI_uTRA__SI__cause_oer_p_[0] = {};
const TTCN_OERdescriptor_t Application__Error__Container__UTRA__SI_uTRA__SI__cause_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Application__Error__Container__UTRA__SI_uTRA__SI__cause_oer_ext_arr_, 0, Application__Error__Container__UTRA__SI_uTRA__SI__cause_oer_p_};
const TTCN_Typedescriptor_t Application__Error__Container__UTRA__SI_uTRA__SI__cause_descr_ = { "@BSSGP_Types.Application_Error_Container_UTRA_SI.uTRA_SI_cause", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Application__Error__Container__UTRA__SI_uTRA__SI__cause_xer_, &OCTETSTRING_json_, &Application__Error__Container__UTRA__SI_uTRA__SI__cause_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI_uTRA__SI__cause_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Container__IE__UTRA__SI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Container__IE__UTRA__SI
const TTCN_Typedescriptor_t Application__Container__IE__UTRA__SI_descr_ = { "@BSSGP_Types.Application_Container_IE_UTRA_SI", NULL, &Application__Container__IE__UTRA__SI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Container__IE__UTRA__SI_rAN__Information__Request__Application__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Container__IE__UTRA__SI_rAN__Information__Application__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Container__IE__UTRA__SI_default_coding("RAW");
UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI_erroneousApplicationContainer_default_coding("RAW");
const TTCN_RAWdescriptor_t Application__Error__Container__UTRA__SI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Application__Error__Container__UTRA__SI
const TTCN_Typedescriptor_t Application__Error__Container__UTRA__SI_descr_ = { "@BSSGP_Types.Application_Error_Container_UTRA_SI", NULL, &Application__Error__Container__UTRA__SI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Application__Error__Container__UTRA__SI_default_coding("RAW");
const XERdescriptor_t       PFC__flow__control__parameters_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PFC__flow__control__parameters_iEI_oer_ext_arr_[0] = {};
const int PFC__flow__control__parameters_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t PFC__flow__control__parameters_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PFC__flow__control__parameters_iEI_oer_ext_arr_, 0, PFC__flow__control__parameters_iEI_oer_p_};
const TTCN_Typedescriptor_t PFC__flow__control__parameters_iEI_descr_ = { "@BSSGP_Types.PFC_flow_control_parameters.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PFC__flow__control__parameters_iEI_xer_, &OCTETSTRING_json_, &PFC__flow__control__parameters_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC__flow__control__parameters_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t PFC__flow__control__parameters_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PFC__flow__control__parameters_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PFC__flow__control__parameters_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PFC__flow__control__parameters_ext_descr_ = { "@BSSGP_Types.PFC_flow_control_parameters.ext", &BITSTRING_ber_, &PFC__flow__control__parameters_ext_raw_, NULL, &PFC__flow__control__parameters_ext_xer_, &BITSTRING_json_, &PFC__flow__control__parameters_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC__flow__control__parameters_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t PFC__flow__control__parameters_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PFC__flow__control__parameters_lengthIndicator
const TTCN_Typedescriptor_t PFC__flow__control__parameters_lengthIndicator_descr_ = { "@BSSGP_Types.PFC_flow_control_parameters.lengthIndicator", NULL, &PFC__flow__control__parameters_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC__flow__control__parameters_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t PFC__flow__control__parameters_number__of__PFC_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PFC__flow__control__parameters_number__of__PFC_xer_ = { {"number_of_PFC>\n", "number_of_PFC>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t PFC__flow__control__parameters_number__of__PFC_descr_ = { "@BSSGP_Types.PFC_flow_control_parameters.number_of_PFC", &INTEGER_ber_, &PFC__flow__control__parameters_number__of__PFC_raw_, &INTEGER_text_, &PFC__flow__control__parameters_number__of__PFC_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC__flow__control__parameters_number__of__PFC_default_coding("RAW");
const TTCN_RAWdescriptor_t PFCs_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PFCs
const TTCN_Typedescriptor_t PFCs_descr_ = { "@BSSGP_Types.PFCs", NULL, &PFCs_raw_, NULL, NULL, NULL, NULL, NULL, &PFC_descr_, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       PFC_pFI__Value_xer_ = { {"pFI_Value>\n", "pFI_Value>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PFC_pFI__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PFC_pFI__Value_descr_ = { "@BSSGP_Types.PFC.pFI_Value", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &PFC_pFI__Value_xer_, &BITSTRING_json_, &PFC_pFI__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC_pFI__Value_default_coding("RAW");
const XERdescriptor_t       PFC_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PFC_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PFC_spare_descr_ = { "@BSSGP_Types.PFC.spare", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PFC_spare_xer_, &BITSTRING_json_, &PFC_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC_spare_default_coding("RAW");
const XERdescriptor_t       PFC_bmax__PFC_xer_ = { {"bmax_PFC>\n", "bmax_PFC>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PFC_bmax__PFC_oer_ext_arr_[0] = {};
const int PFC_bmax__PFC_oer_p_[0] = {};
const TTCN_OERdescriptor_t PFC_bmax__PFC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, PFC_bmax__PFC_oer_ext_arr_, 0, PFC_bmax__PFC_oer_p_};
const TTCN_Typedescriptor_t PFC_bmax__PFC_descr_ = { "@BSSGP_Types.PFC.bmax_PFC", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &PFC_bmax__PFC_xer_, &OCTETSTRING_json_, &PFC_bmax__PFC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC_bmax__PFC_default_coding("RAW");
const XERdescriptor_t       PFC_r__PFC_xer_ = { {"r_PFC>\n", "r_PFC>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PFC_r__PFC_oer_ext_arr_[0] = {};
const int PFC_r__PFC_oer_p_[0] = {};
const TTCN_OERdescriptor_t PFC_r__PFC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, PFC_r__PFC_oer_ext_arr_, 0, PFC_r__PFC_oer_p_};
const TTCN_Typedescriptor_t PFC_r__PFC_descr_ = { "@BSSGP_Types.PFC.r_PFC", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &PFC_r__PFC_xer_, &OCTETSTRING_json_, &PFC_r__PFC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC_r__PFC_default_coding("RAW");
const XERdescriptor_t       PFC_b__PFC_xer_ = { {"b_PFC>\n", "b_PFC>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PFC_b__PFC_oer_ext_arr_[0] = {};
const int PFC_b__PFC_oer_p_[0] = {};
const TTCN_OERdescriptor_t PFC_b__PFC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PFC_b__PFC_oer_ext_arr_, 0, PFC_b__PFC_oer_p_};
const TTCN_Typedescriptor_t PFC_b__PFC_descr_ = { "@BSSGP_Types.PFC.b_PFC", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PFC_b__PFC_xer_, &OCTETSTRING_json_, &PFC_b__PFC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC_b__PFC_default_coding("RAW");
const TTCN_RAWdescriptor_t PFC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PFC
const TTCN_Typedescriptor_t PFC_descr_ = { "@BSSGP_Types.PFC", NULL, &PFC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC_default_coding("RAW");
UNIVERSAL_CHARSTRING PFCs_0_default_coding("RAW");
UNIVERSAL_CHARSTRING PFCs_default_coding("RAW");
UNIVERSAL_CHARSTRING PFC__flow__control__parameters_pFCs_default_coding("RAW");
const TTCN_RAWdescriptor_t PFC__flow__control__parameters_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PFC__flow__control__parameters
const TTCN_Typedescriptor_t PFC__flow__control__parameters_descr_ = { "@BSSGP_Types.PFC_flow_control_parameters", NULL, &PFC__flow__control__parameters_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFC__flow__control__parameters_default_coding("RAW");
const XERdescriptor_t       Global__CN__Id__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Global__CN__Id__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Global__CN__Id__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Global__CN__Id__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Global__CN__Id__BSSGP_iEI_oer_ext_arr_, 0, Global__CN__Id__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Global__CN__Id__BSSGP_iEI_descr_ = { "@BSSGP_Types.Global_CN_Id_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Global__CN__Id__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Global__CN__Id__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Global__CN__Id__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Global__CN__Id__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Global__CN__Id__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Global__CN__Id__BSSGP_ext_descr_ = { "@BSSGP_Types.Global_CN_Id_BSSGP.ext", &BITSTRING_ber_, &Global__CN__Id__BSSGP_ext_raw_, NULL, &Global__CN__Id__BSSGP_ext_xer_, &BITSTRING_json_, &Global__CN__Id__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Global__CN__Id__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Global__CN__Id__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Global__CN__Id__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Global_CN_Id_BSSGP.lengthIndicator", NULL, &Global__CN__Id__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Global__CN__Id__Value_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Global__CN__Id__Value_mccDigit1_descr_ = { "@BSSGP_Types.Global_CN_Id_Value.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Global__CN__Id__Value_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__Value_mccDigit1_default_coding("RAW");
const XERdescriptor_t       Global__CN__Id__Value_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Global__CN__Id__Value_mccDigit2_descr_ = { "@BSSGP_Types.Global_CN_Id_Value.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Global__CN__Id__Value_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__Value_mccDigit2_default_coding("RAW");
const XERdescriptor_t       Global__CN__Id__Value_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Global__CN__Id__Value_mccDigit3_descr_ = { "@BSSGP_Types.Global_CN_Id_Value.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Global__CN__Id__Value_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__Value_mccDigit3_default_coding("RAW");
const XERdescriptor_t       Global__CN__Id__Value_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Global__CN__Id__Value_mncDigit3_descr_ = { "@BSSGP_Types.Global_CN_Id_Value.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Global__CN__Id__Value_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__Value_mncDigit3_default_coding("RAW");
const XERdescriptor_t       Global__CN__Id__Value_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Global__CN__Id__Value_mncDigit1_descr_ = { "@BSSGP_Types.Global_CN_Id_Value.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Global__CN__Id__Value_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__Value_mncDigit1_default_coding("RAW");
const XERdescriptor_t       Global__CN__Id__Value_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Global__CN__Id__Value_mncDigit2_descr_ = { "@BSSGP_Types.Global_CN_Id_Value.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Global__CN__Id__Value_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__Value_mncDigit2_default_coding("RAW");
const XERdescriptor_t       Global__CN__Id__Value_cN__Id_xer_ = { {"cN_Id>\n", "cN_Id>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Global__CN__Id__Value_cN__Id_oer_ext_arr_[0] = {};
const int Global__CN__Id__Value_cN__Id_oer_p_[0] = {};
const TTCN_OERdescriptor_t Global__CN__Id__Value_cN__Id_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Global__CN__Id__Value_cN__Id_oer_ext_arr_, 0, Global__CN__Id__Value_cN__Id_oer_p_};
const TTCN_Typedescriptor_t Global__CN__Id__Value_cN__Id_descr_ = { "@BSSGP_Types.Global_CN_Id_Value.cN_Id", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Global__CN__Id__Value_cN__Id_xer_, &OCTETSTRING_json_, &Global__CN__Id__Value_cN__Id_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__Value_cN__Id_default_coding("RAW");
const TTCN_RAWdescriptor_t Global__CN__Id__Value_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Global__CN__Id__Value
const TTCN_Typedescriptor_t Global__CN__Id__Value_descr_ = { "@BSSGP_Types.Global_CN_Id_Value", NULL, &Global__CN__Id__Value_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__Value_default_coding("RAW");
UNIVERSAL_CHARSTRING Global__CN__Id__BSSGP_global__CN__Id_default_coding("RAW");
const TTCN_RAWdescriptor_t Global__CN__Id__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Global__CN__Id__BSSGP
const TTCN_Typedescriptor_t Global__CN__Id__BSSGP_descr_ = { "@BSSGP_Types.Global_CN_Id_BSSGP", NULL, &Global__CN__Id__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__CN__Id__BSSGP_default_coding("RAW");
const XERdescriptor_t       RIM__Routing__Information_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RIM__Routing__Information_iEI_oer_ext_arr_[0] = {};
const int RIM__Routing__Information_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RIM__Routing__Information_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RIM__Routing__Information_iEI_oer_ext_arr_, 0, RIM__Routing__Information_iEI_oer_p_};
const TTCN_Typedescriptor_t RIM__Routing__Information_iEI_descr_ = { "@BSSGP_Types.RIM_Routing_Information.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RIM__Routing__Information_iEI_xer_, &OCTETSTRING_json_, &RIM__Routing__Information_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Routing__Information_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Routing__Information_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RIM__Routing__Information_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RIM__Routing__Information_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RIM__Routing__Information_ext_descr_ = { "@BSSGP_Types.RIM_Routing_Information.ext", &BITSTRING_ber_, &RIM__Routing__Information_ext_raw_, NULL, &RIM__Routing__Information_ext_xer_, &BITSTRING_json_, &RIM__Routing__Information_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Routing__Information_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Routing__Information_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__Routing__Information_lengthIndicator
const TTCN_Typedescriptor_t RIM__Routing__Information_lengthIndicator_descr_ = { "@BSSGP_Types.RIM_Routing_Information.lengthIndicator", NULL, &RIM__Routing__Information_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Routing__Information_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       RIM__Routing__Information_rIMRoutingAddressDiscriminator_xer_ = { {"rIMRoutingAddressDiscriminator>\n", "rIMRoutingAddressDiscriminator>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t RIM__Routing__Information_rIMRoutingAddressDiscriminator_descr_ = { "@BSSGP_Types.RIM_Routing_Information.rIMRoutingAddressDiscriminator", NULL, &General__Types::HEX1_raw_, NULL, &RIM__Routing__Information_rIMRoutingAddressDiscriminator_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Routing__Information_rIMRoutingAddressDiscriminator_default_coding("RAW");
const XERdescriptor_t       RIM__Routing__Information_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t RIM__Routing__Information_spare_descr_ = { "@BSSGP_Types.RIM_Routing_Information.spare", NULL, &General__Types::HEX1_raw_, NULL, &RIM__Routing__Information_spare_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Routing__Information_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Routing__Address_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__Routing__Address
const TTCN_Typedescriptor_t RIM__Routing__Address_descr_ = { "@BSSGP_Types.RIM_Routing_Address", NULL, &RIM__Routing__Address_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Routing__Address_cell__Identifier_default_coding("RAW");
const XERdescriptor_t       GlobalRNC__ID__BSSGP_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_mccDigit1_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &GlobalRNC__ID__BSSGP_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_mccDigit1_default_coding("RAW");
const XERdescriptor_t       GlobalRNC__ID__BSSGP_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_mccDigit2_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &GlobalRNC__ID__BSSGP_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_mccDigit2_default_coding("RAW");
const XERdescriptor_t       GlobalRNC__ID__BSSGP_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_mccDigit3_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &GlobalRNC__ID__BSSGP_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_mccDigit3_default_coding("RAW");
const XERdescriptor_t       GlobalRNC__ID__BSSGP_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_mncDigit3_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &GlobalRNC__ID__BSSGP_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_mncDigit3_default_coding("RAW");
const XERdescriptor_t       GlobalRNC__ID__BSSGP_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_mncDigit1_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &GlobalRNC__ID__BSSGP_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_mncDigit1_default_coding("RAW");
const XERdescriptor_t       GlobalRNC__ID__BSSGP_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_mncDigit2_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &GlobalRNC__ID__BSSGP_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_mncDigit2_default_coding("RAW");
const XERdescriptor_t       GlobalRNC__ID__BSSGP_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int GlobalRNC__ID__BSSGP_lac_oer_ext_arr_[0] = {};
const int GlobalRNC__ID__BSSGP_lac_oer_p_[0] = {};
const TTCN_OERdescriptor_t GlobalRNC__ID__BSSGP_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GlobalRNC__ID__BSSGP_lac_oer_ext_arr_, 0, GlobalRNC__ID__BSSGP_lac_oer_p_};
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_lac_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GlobalRNC__ID__BSSGP_lac_xer_, &OCTETSTRING_json_, &GlobalRNC__ID__BSSGP_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_lac_default_coding("RAW");
const XERdescriptor_t       GlobalRNC__ID__BSSGP_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int GlobalRNC__ID__BSSGP_rac_oer_ext_arr_[0] = {};
const int GlobalRNC__ID__BSSGP_rac_oer_p_[0] = {};
const TTCN_OERdescriptor_t GlobalRNC__ID__BSSGP_rac_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GlobalRNC__ID__BSSGP_rac_oer_ext_arr_, 0, GlobalRNC__ID__BSSGP_rac_oer_p_};
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_rac_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP.rac", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GlobalRNC__ID__BSSGP_rac_xer_, &OCTETSTRING_json_, &GlobalRNC__ID__BSSGP_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_rac_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalRNC__ID__BSSGP_spare_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalRNC__ID__BSSGP_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_spare_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP.spare", NULL, &GlobalRNC__ID__BSSGP_spare_raw_, NULL, &GlobalRNC__ID__BSSGP_spare_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalRNC__ID__BSSGP_rNC__ID_raw_ = {12,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GlobalRNC__ID__BSSGP_rNC__ID_xer_ = { {"rNC_ID>\n", "rNC_ID>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_rNC__ID_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP.rNC_ID", &INTEGER_ber_, &GlobalRNC__ID__BSSGP_rNC__ID_raw_, &INTEGER_text_, &GlobalRNC__ID__BSSGP_rNC__ID_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_rNC__ID_default_coding("RAW");
const TTCN_RAWdescriptor_t GlobalRNC__ID__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GlobalRNC__ID__BSSGP
const TTCN_Typedescriptor_t GlobalRNC__ID__BSSGP_descr_ = { "@BSSGP_Types.GlobalRNC_ID_BSSGP", NULL, &GlobalRNC__ID__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GlobalRNC__ID__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING RIM__Routing__Address_globalRNCID_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier__V_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier__V_mccDigit1_descr_ = { "@BSSGP_Types.ENB_Identifier_V.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier__V_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier__V_mccDigit1_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier__V_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier__V_mccDigit2_descr_ = { "@BSSGP_Types.ENB_Identifier_V.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier__V_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier__V_mccDigit2_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier__V_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier__V_mccDigit3_descr_ = { "@BSSGP_Types.ENB_Identifier_V.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier__V_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier__V_mccDigit3_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier__V_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier__V_mncDigit3_descr_ = { "@BSSGP_Types.ENB_Identifier_V.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier__V_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier__V_mncDigit3_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier__V_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier__V_mncDigit1_descr_ = { "@BSSGP_Types.ENB_Identifier_V.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier__V_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier__V_mncDigit1_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier__V_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier__V_mncDigit2_descr_ = { "@BSSGP_Types.ENB_Identifier_V.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier__V_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier__V_mncDigit2_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier__V_tac_xer_ = { {"tac>\n", "tac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ENB__Identifier__V_tac_oer_ext_arr_[0] = {};
const int ENB__Identifier__V_tac_oer_p_[0] = {};
const TTCN_OERdescriptor_t ENB__Identifier__V_tac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ENB__Identifier__V_tac_oer_ext_arr_, 0, ENB__Identifier__V_tac_oer_p_};
const TTCN_Typedescriptor_t ENB__Identifier__V_tac_descr_ = { "@BSSGP_Types.ENB_Identifier_V.tac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &ENB__Identifier__V_tac_xer_, &OCTETSTRING_json_, &ENB__Identifier__V_tac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier__V_tac_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier__V_globaleNBID_xer_ = { {"globaleNBID>\n", "globaleNBID>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ENB__Identifier__V_globaleNBID_oer_ext_arr_[0] = {};
const int ENB__Identifier__V_globaleNBID_oer_p_[0] = {};
const TTCN_OERdescriptor_t ENB__Identifier__V_globaleNBID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ENB__Identifier__V_globaleNBID_oer_ext_arr_, 0, ENB__Identifier__V_globaleNBID_oer_p_};
const TTCN_Typedescriptor_t ENB__Identifier__V_globaleNBID_descr_ = { "@BSSGP_Types.ENB_Identifier_V.globaleNBID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ENB__Identifier__V_globaleNBID_xer_, &OCTETSTRING_json_, &ENB__Identifier__V_globaleNBID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier__V_globaleNBID_default_coding("RAW");
const TTCN_RAWdescriptor_t ENB__Identifier__V_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ENB__Identifier__V
const TTCN_Typedescriptor_t ENB__Identifier__V_descr_ = { "@BSSGP_Types.ENB_Identifier_V", NULL, &ENB__Identifier__V_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier__V_default_coding("RAW");
UNIVERSAL_CHARSTRING RIM__Routing__Address_eNB__Identifier_default_coding("RAW");
const XERdescriptor_t       RIM__Routing__Address_eHRPD__SectorID_xer_ = { {"eHRPD_SectorID>\n", "eHRPD_SectorID>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RIM__Routing__Address_eHRPD__SectorID_oer_ext_arr_[0] = {};
const int RIM__Routing__Address_eHRPD__SectorID_oer_p_[0] = {};
const TTCN_OERdescriptor_t RIM__Routing__Address_eHRPD__SectorID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RIM__Routing__Address_eHRPD__SectorID_oer_ext_arr_, 0, RIM__Routing__Address_eHRPD__SectorID_oer_p_};
const TTCN_Typedescriptor_t RIM__Routing__Address_eHRPD__SectorID_descr_ = { "@BSSGP_Types.RIM_Routing_Address.eHRPD_SectorID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &RIM__Routing__Address_eHRPD__SectorID_xer_, &OCTETSTRING_json_, &RIM__Routing__Address_eHRPD__SectorID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Routing__Address_eHRPD__SectorID_default_coding("RAW");
UNIVERSAL_CHARSTRING RIM__Routing__Address_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Routing__Information_rIM__Routing__Address_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__Routing__Information_rIM__Routing__Address
const TTCN_Typedescriptor_t RIM__Routing__Information_rIM__Routing__Address_descr_ = { "@BSSGP_Types.RIM_Routing_Information.rIM_Routing_Address", NULL, &RIM__Routing__Information_rIM__Routing__Address_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Routing__Information_rIM__Routing__Address_default_coding("RAW");
const TTCN_RAWdescriptor_t RIM__Routing__Information_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RIM__Routing__Information
const TTCN_Typedescriptor_t RIM__Routing__Information_descr_ = { "@BSSGP_Types.RIM_Routing_Information", NULL, &RIM__Routing__Information_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RIM__Routing__Information_default_coding("RAW");
const XERdescriptor_t       MBMS__Session__Identity_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Session__Identity_iEI_oer_ext_arr_[0] = {};
const int MBMS__Session__Identity_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Session__Identity_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__Session__Identity_iEI_oer_ext_arr_, 0, MBMS__Session__Identity_iEI_oer_p_};
const TTCN_Typedescriptor_t MBMS__Session__Identity_iEI_descr_ = { "@BSSGP_Types.MBMS_Session_Identity.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__Session__Identity_iEI_xer_, &OCTETSTRING_json_, &MBMS__Session__Identity_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Identity_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Identity_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MBMS__Session__Identity_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MBMS__Session__Identity_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MBMS__Session__Identity_ext_descr_ = { "@BSSGP_Types.MBMS_Session_Identity.ext", &BITSTRING_ber_, &MBMS__Session__Identity_ext_raw_, NULL, &MBMS__Session__Identity_ext_xer_, &BITSTRING_json_, &MBMS__Session__Identity_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Identity_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Identity_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Session__Identity_lengthIndicator
const TTCN_Typedescriptor_t MBMS__Session__Identity_lengthIndicator_descr_ = { "@BSSGP_Types.MBMS_Session_Identity.lengthIndicator", NULL, &MBMS__Session__Identity_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Identity_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MBMS__Session__Identity_mBMS__Session__Identifier__Value_xer_ = { {"mBMS_Session_Identifier_Value>\n", "mBMS_Session_Identifier_Value>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Session__Identity_mBMS__Session__Identifier__Value_oer_ext_arr_[0] = {};
const int MBMS__Session__Identity_mBMS__Session__Identifier__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Session__Identity_mBMS__Session__Identifier__Value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__Session__Identity_mBMS__Session__Identifier__Value_oer_ext_arr_, 0, MBMS__Session__Identity_mBMS__Session__Identifier__Value_oer_p_};
const TTCN_Typedescriptor_t MBMS__Session__Identity_mBMS__Session__Identifier__Value_descr_ = { "@BSSGP_Types.MBMS_Session_Identity.mBMS_Session_Identifier_Value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__Session__Identity_mBMS__Session__Identifier__Value_xer_, &OCTETSTRING_json_, &MBMS__Session__Identity_mBMS__Session__Identifier__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Identity_mBMS__Session__Identifier__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Identity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Session__Identity
const TTCN_Typedescriptor_t MBMS__Session__Identity_descr_ = { "@BSSGP_Types.MBMS_Session_Identity", NULL, &MBMS__Session__Identity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Identity_default_coding("RAW");
const XERdescriptor_t       MBMS__Session__Duration_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Session__Duration_iEI_oer_ext_arr_[0] = {};
const int MBMS__Session__Duration_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Session__Duration_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__Session__Duration_iEI_oer_ext_arr_, 0, MBMS__Session__Duration_iEI_oer_p_};
const TTCN_Typedescriptor_t MBMS__Session__Duration_iEI_descr_ = { "@BSSGP_Types.MBMS_Session_Duration.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__Session__Duration_iEI_xer_, &OCTETSTRING_json_, &MBMS__Session__Duration_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Duration_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Duration_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MBMS__Session__Duration_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MBMS__Session__Duration_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MBMS__Session__Duration_ext_descr_ = { "@BSSGP_Types.MBMS_Session_Duration.ext", &BITSTRING_ber_, &MBMS__Session__Duration_ext_raw_, NULL, &MBMS__Session__Duration_ext_xer_, &BITSTRING_json_, &MBMS__Session__Duration_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Duration_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Duration_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Session__Duration_lengthIndicator
const TTCN_Typedescriptor_t MBMS__Session__Duration_lengthIndicator_descr_ = { "@BSSGP_Types.MBMS_Session_Duration.lengthIndicator", NULL, &MBMS__Session__Duration_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Duration_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MBMS__Session__Duration_mBMS__Session__Duration__Value_xer_ = { {"mBMS_Session_Duration_Value>\n", "mBMS_Session_Duration_Value>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Session__Duration_mBMS__Session__Duration__Value_oer_ext_arr_[0] = {};
const int MBMS__Session__Duration_mBMS__Session__Duration__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Session__Duration_mBMS__Session__Duration__Value_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMS__Session__Duration_mBMS__Session__Duration__Value_oer_ext_arr_, 0, MBMS__Session__Duration_mBMS__Session__Duration__Value_oer_p_};
const TTCN_Typedescriptor_t MBMS__Session__Duration_mBMS__Session__Duration__Value_descr_ = { "@BSSGP_Types.MBMS_Session_Duration.mBMS_Session_Duration_Value", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MBMS__Session__Duration_mBMS__Session__Duration__Value_xer_, &OCTETSTRING_json_, &MBMS__Session__Duration_mBMS__Session__Duration__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Duration_mBMS__Session__Duration__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Duration_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Session__Duration
const TTCN_Typedescriptor_t MBMS__Session__Duration_descr_ = { "@BSSGP_Types.MBMS_Session_Duration", NULL, &MBMS__Session__Duration_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Duration_default_coding("RAW");
const XERdescriptor_t       MBMS__Service__Area__Identity__List_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Service__Area__Identity__List_iEI_oer_ext_arr_[0] = {};
const int MBMS__Service__Area__Identity__List_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Service__Area__Identity__List_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__Service__Area__Identity__List_iEI_oer_ext_arr_, 0, MBMS__Service__Area__Identity__List_iEI_oer_p_};
const TTCN_Typedescriptor_t MBMS__Service__Area__Identity__List_iEI_descr_ = { "@BSSGP_Types.MBMS_Service_Area_Identity_List.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__Service__Area__Identity__List_iEI_xer_, &OCTETSTRING_json_, &MBMS__Service__Area__Identity__List_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Service__Area__Identity__List_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Service__Area__Identity__List_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MBMS__Service__Area__Identity__List_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MBMS__Service__Area__Identity__List_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MBMS__Service__Area__Identity__List_ext_descr_ = { "@BSSGP_Types.MBMS_Service_Area_Identity_List.ext", &BITSTRING_ber_, &MBMS__Service__Area__Identity__List_ext_raw_, NULL, &MBMS__Service__Area__Identity__List_ext_xer_, &BITSTRING_json_, &MBMS__Service__Area__Identity__List_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Service__Area__Identity__List_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Service__Area__Identity__List_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Service__Area__Identity__List_lengthIndicator
const TTCN_Typedescriptor_t MBMS__Service__Area__Identity__List_lengthIndicator_descr_ = { "@BSSGP_Types.MBMS_Service_Area_Identity_List.lengthIndicator", NULL, &MBMS__Service__Area__Identity__List_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Service__Area__Identity__List_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MBMS__Service__Area__Identity__List_mBMS__Service__Area__Identity__List__Value_xer_ = { {"mBMS_Service_Area_Identity_List_Value>\n", "mBMS_Service_Area_Identity_List_Value>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Service__Area__Identity__List_mBMS__Service__Area__Identity__List__Value_oer_ext_arr_[0] = {};
const int MBMS__Service__Area__Identity__List_mBMS__Service__Area__Identity__List__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Service__Area__Identity__List_mBMS__Service__Area__Identity__List__Value_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMS__Service__Area__Identity__List_mBMS__Service__Area__Identity__List__Value_oer_ext_arr_, 0, MBMS__Service__Area__Identity__List_mBMS__Service__Area__Identity__List__Value_oer_p_};
const TTCN_Typedescriptor_t MBMS__Service__Area__Identity__List_mBMS__Service__Area__Identity__List__Value_descr_ = { "@BSSGP_Types.MBMS_Service_Area_Identity_List.mBMS_Service_Area_Identity_List_Value", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MBMS__Service__Area__Identity__List_mBMS__Service__Area__Identity__List__Value_xer_, &OCTETSTRING_json_, &MBMS__Service__Area__Identity__List_mBMS__Service__Area__Identity__List__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Service__Area__Identity__List_mBMS__Service__Area__Identity__List__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Service__Area__Identity__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Service__Area__Identity__List
const TTCN_Typedescriptor_t MBMS__Service__Area__Identity__List_descr_ = { "@BSSGP_Types.MBMS_Service_Area_Identity_List", NULL, &MBMS__Service__Area__Identity__List_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Service__Area__Identity__List_default_coding("RAW");
const XERdescriptor_t       MBMS__Response_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Response_iEI_oer_ext_arr_[0] = {};
const int MBMS__Response_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Response_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__Response_iEI_oer_ext_arr_, 0, MBMS__Response_iEI_oer_p_};
const TTCN_Typedescriptor_t MBMS__Response_iEI_descr_ = { "@BSSGP_Types.MBMS_Response.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__Response_iEI_xer_, &OCTETSTRING_json_, &MBMS__Response_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Response_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Response_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MBMS__Response_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MBMS__Response_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MBMS__Response_ext_descr_ = { "@BSSGP_Types.MBMS_Response.ext", &BITSTRING_ber_, &MBMS__Response_ext_raw_, NULL, &MBMS__Response_ext_xer_, &BITSTRING_json_, &MBMS__Response_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Response_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Response_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Response_lengthIndicator
const TTCN_Typedescriptor_t MBMS__Response_lengthIndicator_descr_ = { "@BSSGP_Types.MBMS_Response.lengthIndicator", NULL, &MBMS__Response_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Response_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MBMS__Response_causeValue_xer_ = { {"causeValue>\n", "causeValue>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t MBMS__Response_causeValue_descr_ = { "@BSSGP_Types.MBMS_Response.causeValue", NULL, &General__Types::HEX1_raw_, NULL, &MBMS__Response_causeValue_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Response_causeValue_default_coding("RAW");
const XERdescriptor_t       MBMS__Response_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t MBMS__Response_spare_descr_ = { "@BSSGP_Types.MBMS_Response.spare", NULL, &General__Types::HEX1_raw_, NULL, &MBMS__Response_spare_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Response_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Response_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Response
const TTCN_Typedescriptor_t MBMS__Response_descr_ = { "@BSSGP_Types.MBMS_Response", NULL, &MBMS__Response_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Response_default_coding("RAW");
const XERdescriptor_t       MBMS__Routing__Area__List_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Routing__Area__List_iEI_oer_ext_arr_[0] = {};
const int MBMS__Routing__Area__List_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Routing__Area__List_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__Routing__Area__List_iEI_oer_ext_arr_, 0, MBMS__Routing__Area__List_iEI_oer_p_};
const TTCN_Typedescriptor_t MBMS__Routing__Area__List_iEI_descr_ = { "@BSSGP_Types.MBMS_Routing_Area_List.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__Routing__Area__List_iEI_xer_, &OCTETSTRING_json_, &MBMS__Routing__Area__List_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Routing__Area__List_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Routing__Area__List_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MBMS__Routing__Area__List_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MBMS__Routing__Area__List_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MBMS__Routing__Area__List_ext_descr_ = { "@BSSGP_Types.MBMS_Routing_Area_List.ext", &BITSTRING_ber_, &MBMS__Routing__Area__List_ext_raw_, NULL, &MBMS__Routing__Area__List_ext_xer_, &BITSTRING_json_, &MBMS__Routing__Area__List_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Routing__Area__List_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Routing__Area__List_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Routing__Area__List_lengthIndicator
const TTCN_Typedescriptor_t MBMS__Routing__Area__List_lengthIndicator_descr_ = { "@BSSGP_Types.MBMS_Routing_Area_List.lengthIndicator", NULL, &MBMS__Routing__Area__List_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Routing__Area__List_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MBMS__Routing__Area__List_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t MBMS__Routing__Area__List_spare_descr_ = { "@BSSGP_Types.MBMS_Routing_Area_List.spare", NULL, &General__Types::HEX1_raw_, NULL, &MBMS__Routing__Area__List_spare_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Routing__Area__List_spare_default_coding("RAW");
const XERdescriptor_t       MBMS__Routing__Area__List_number__of__Routing__Area__Identifications_xer_ = { {"number_of_Routing_Area_Identifications>\n", "number_of_Routing_Area_Identifications>\n"}, {40, 40}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t MBMS__Routing__Area__List_number__of__Routing__Area__Identifications_descr_ = { "@BSSGP_Types.MBMS_Routing_Area_List.number_of_Routing_Area_Identifications", NULL, &General__Types::HEX1_raw_, NULL, &MBMS__Routing__Area__List_number__of__Routing__Area__Identifications_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Routing__Area__List_number__of__Routing__Area__Identifications_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Routing__Area__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Routing__Area__List
const TTCN_Typedescriptor_t MBMS__Routing__Area__List_descr_ = { "@BSSGP_Types.MBMS_Routing_Area_List", NULL, &MBMS__Routing__Area__List_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       MBMS__Routing__Area__List_routing__Area__Identifications_xer_ = { {"routing_Area_Identifications>\n", "routing_Area_Identifications>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Routing__Area__List_routing__Area__Identifications_oer_ext_arr_[0] = {};
const int MBMS__Routing__Area__List_routing__Area__Identifications_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Routing__Area__List_routing__Area__Identifications_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMS__Routing__Area__List_routing__Area__Identifications_oer_ext_arr_, 0, MBMS__Routing__Area__List_routing__Area__Identifications_oer_p_};
const TTCN_Typedescriptor_t MBMS__Routing__Area__List_routing__Area__Identifications_descr_ = { "@BSSGP_Types.MBMS_Routing_Area_List.routing_Area_Identifications", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MBMS__Routing__Area__List_routing__Area__Identifications_xer_, &OCTETSTRING_json_, &MBMS__Routing__Area__List_routing__Area__Identifications_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Routing__Area__List_routing__Area__Identifications_default_coding("RAW");
UNIVERSAL_CHARSTRING MBMS__Routing__Area__List_default_coding("RAW");
const XERdescriptor_t       MBMS__Session__Information_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Session__Information_iEI_oer_ext_arr_[0] = {};
const int MBMS__Session__Information_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Session__Information_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__Session__Information_iEI_oer_ext_arr_, 0, MBMS__Session__Information_iEI_oer_p_};
const TTCN_Typedescriptor_t MBMS__Session__Information_iEI_descr_ = { "@BSSGP_Types.MBMS_Session_Information.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__Session__Information_iEI_xer_, &OCTETSTRING_json_, &MBMS__Session__Information_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Information_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Information_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MBMS__Session__Information_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MBMS__Session__Information_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MBMS__Session__Information_ext_descr_ = { "@BSSGP_Types.MBMS_Session_Information.ext", &BITSTRING_ber_, &MBMS__Session__Information_ext_raw_, NULL, &MBMS__Session__Information_ext_xer_, &BITSTRING_json_, &MBMS__Session__Information_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Information_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Information_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Session__Information_lengthIndicator
const TTCN_Typedescriptor_t MBMS__Session__Information_lengthIndicator_descr_ = { "@BSSGP_Types.MBMS_Session_Information.lengthIndicator", NULL, &MBMS__Session__Information_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Information_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MBMS__Session__Information_bCMC_xer_ = { {"bCMC>\n", "bCMC>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MBMS__Session__Information_bCMC_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MBMS__Session__Information_bCMC_descr_ = { "@BSSGP_Types.MBMS_Session_Information.bCMC", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &MBMS__Session__Information_bCMC_xer_, &BITSTRING_json_, &MBMS__Session__Information_bCMC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Information_bCMC_default_coding("RAW");
const XERdescriptor_t       MBMS__Session__Information_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MBMS__Session__Information_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MBMS__Session__Information_spare_descr_ = { "@BSSGP_Types.MBMS_Session_Information.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &MBMS__Session__Information_spare_xer_, &BITSTRING_json_, &MBMS__Session__Information_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Information_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Information_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Session__Information
const TTCN_Typedescriptor_t MBMS__Session__Information_descr_ = { "@BSSGP_Types.MBMS_Session_Information", NULL, &MBMS__Session__Information_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Information_default_coding("RAW");
const XERdescriptor_t       TMGI__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int TMGI__BSSGP_iEI_oer_ext_arr_[0] = {};
const int TMGI__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t TMGI__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TMGI__BSSGP_iEI_oer_ext_arr_, 0, TMGI__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t TMGI__BSSGP_iEI_descr_ = { "@BSSGP_Types.TMGI_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &TMGI__BSSGP_iEI_xer_, &OCTETSTRING_json_, &TMGI__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t TMGI__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       TMGI__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t TMGI__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t TMGI__BSSGP_ext_descr_ = { "@BSSGP_Types.TMGI_BSSGP.ext", &BITSTRING_ber_, &TMGI__BSSGP_ext_raw_, NULL, &TMGI__BSSGP_ext_xer_, &BITSTRING_json_, &TMGI__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t TMGI__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for TMGI__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t TMGI__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.TMGI_BSSGP.lengthIndicator", NULL, &TMGI__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       TMGI__BSSGP_mBMS__Service__ID_xer_ = { {"mBMS_Service_ID>\n", "mBMS_Service_ID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int TMGI__BSSGP_mBMS__Service__ID_oer_ext_arr_[0] = {};
const int TMGI__BSSGP_mBMS__Service__ID_oer_p_[0] = {};
const TTCN_OERdescriptor_t TMGI__BSSGP_mBMS__Service__ID_oer_ = { -1, TRUE, 3, FALSE, 0, 0, TMGI__BSSGP_mBMS__Service__ID_oer_ext_arr_, 0, TMGI__BSSGP_mBMS__Service__ID_oer_p_};
const TTCN_Typedescriptor_t TMGI__BSSGP_mBMS__Service__ID_descr_ = { "@BSSGP_Types.TMGI_BSSGP.mBMS_Service_ID", &OCTETSTRING_ber_, &General__Types::OCT3_raw_, &OCTETSTRING_text_, &TMGI__BSSGP_mBMS__Service__ID_xer_, &OCTETSTRING_json_, &TMGI__BSSGP_mBMS__Service__ID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_mBMS__Service__ID_default_coding("RAW");
const XERdescriptor_t       TMGI__BSSGP_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TMGI__BSSGP_mccDigit1_descr_ = { "@BSSGP_Types.TMGI_BSSGP.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &TMGI__BSSGP_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_mccDigit1_default_coding("RAW");
const XERdescriptor_t       TMGI__BSSGP_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TMGI__BSSGP_mccDigit2_descr_ = { "@BSSGP_Types.TMGI_BSSGP.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &TMGI__BSSGP_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_mccDigit2_default_coding("RAW");
const XERdescriptor_t       TMGI__BSSGP_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TMGI__BSSGP_mccDigit3_descr_ = { "@BSSGP_Types.TMGI_BSSGP.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &TMGI__BSSGP_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_mccDigit3_default_coding("RAW");
const XERdescriptor_t       TMGI__BSSGP_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TMGI__BSSGP_mncDigit3_descr_ = { "@BSSGP_Types.TMGI_BSSGP.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &TMGI__BSSGP_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_mncDigit3_default_coding("RAW");
const XERdescriptor_t       TMGI__BSSGP_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TMGI__BSSGP_mncDigit1_descr_ = { "@BSSGP_Types.TMGI_BSSGP.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &TMGI__BSSGP_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_mncDigit1_default_coding("RAW");
const XERdescriptor_t       TMGI__BSSGP_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TMGI__BSSGP_mncDigit2_descr_ = { "@BSSGP_Types.TMGI_BSSGP.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &TMGI__BSSGP_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_mncDigit2_default_coding("RAW");
const TTCN_RAWdescriptor_t TMGI__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for TMGI__BSSGP
const TTCN_Typedescriptor_t TMGI__BSSGP_descr_ = { "@BSSGP_Types.TMGI_BSSGP", NULL, &TMGI__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TMGI__BSSGP_default_coding("RAW");
const XERdescriptor_t       MBMS__Stop__Cause_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Stop__Cause_iEI_oer_ext_arr_[0] = {};
const int MBMS__Stop__Cause_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Stop__Cause_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__Stop__Cause_iEI_oer_ext_arr_, 0, MBMS__Stop__Cause_iEI_oer_p_};
const TTCN_Typedescriptor_t MBMS__Stop__Cause_iEI_descr_ = { "@BSSGP_Types.MBMS_Stop_Cause.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__Stop__Cause_iEI_xer_, &OCTETSTRING_json_, &MBMS__Stop__Cause_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Stop__Cause_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Stop__Cause_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MBMS__Stop__Cause_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MBMS__Stop__Cause_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MBMS__Stop__Cause_ext_descr_ = { "@BSSGP_Types.MBMS_Stop_Cause.ext", &BITSTRING_ber_, &MBMS__Stop__Cause_ext_raw_, NULL, &MBMS__Stop__Cause_ext_xer_, &BITSTRING_json_, &MBMS__Stop__Cause_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Stop__Cause_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Stop__Cause_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Stop__Cause_lengthIndicator
const TTCN_Typedescriptor_t MBMS__Stop__Cause_lengthIndicator_descr_ = { "@BSSGP_Types.MBMS_Stop_Cause.lengthIndicator", NULL, &MBMS__Stop__Cause_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Stop__Cause_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MBMS__Stop__Cause_causeValue_xer_ = { {"causeValue>\n", "causeValue>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t MBMS__Stop__Cause_causeValue_descr_ = { "@BSSGP_Types.MBMS_Stop_Cause.causeValue", NULL, &General__Types::HEX1_raw_, NULL, &MBMS__Stop__Cause_causeValue_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Stop__Cause_causeValue_default_coding("RAW");
const XERdescriptor_t       MBMS__Stop__Cause_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t MBMS__Stop__Cause_spare_descr_ = { "@BSSGP_Types.MBMS_Stop_Cause.spare", NULL, &General__Types::HEX1_raw_, NULL, &MBMS__Stop__Cause_spare_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Stop__Cause_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Stop__Cause_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Stop__Cause
const TTCN_Typedescriptor_t MBMS__Stop__Cause_descr_ = { "@BSSGP_Types.MBMS_Stop_Cause", NULL, &MBMS__Stop__Cause_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Stop__Cause_default_coding("RAW");
const XERdescriptor_t       Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_iEI_oer_ext_arr_, 0, Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_iEI_descr_ = { "@BSSGP_Types.Source_BSS_to_Target_BSS_Transparent_Container_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_ext_descr_ = { "@BSSGP_Types.Source_BSS_to_Target_BSS_Transparent_Container_BSSGP.ext", &BITSTRING_ber_, &Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_ext_raw_, NULL, &Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_ext_xer_, &BITSTRING_json_, &Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Source_BSS_to_Target_BSS_Transparent_Container_BSSGP.lengthIndicator", NULL, &Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_lengthIndicator_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_mS__Radio__Access__Capability_default_coding("RAW");
const TTCN_RAWdescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__Contents_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Source__BSS__to__Target__BSS__Transparent__Container__Contents
const TTCN_Typedescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__Contents_descr_ = { "@BSSGP_Types.Source_BSS_to_Target_BSS_Transparent_Container_Contents", NULL, &Source__BSS__to__Target__BSS__Transparent__Container__Contents_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       Inter__RAT__Handover__Info__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Inter__RAT__Handover__Info__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Inter__RAT__Handover__Info__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Inter__RAT__Handover__Info__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Inter__RAT__Handover__Info__BSSGP_iEI_oer_ext_arr_, 0, Inter__RAT__Handover__Info__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Inter__RAT__Handover__Info__BSSGP_iEI_descr_ = { "@BSSGP_Types.Inter_RAT_Handover_Info_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Inter__RAT__Handover__Info__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Inter__RAT__Handover__Info__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Inter__RAT__Handover__Info__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Inter__RAT__Handover__Info__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Inter__RAT__Handover__Info__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Inter__RAT__Handover__Info__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Inter__RAT__Handover__Info__BSSGP_ext_descr_ = { "@BSSGP_Types.Inter_RAT_Handover_Info_BSSGP.ext", &BITSTRING_ber_, &Inter__RAT__Handover__Info__BSSGP_ext_raw_, NULL, &Inter__RAT__Handover__Info__BSSGP_ext_xer_, &BITSTRING_json_, &Inter__RAT__Handover__Info__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Inter__RAT__Handover__Info__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Inter__RAT__Handover__Info__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Inter__RAT__Handover__Info__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Inter__RAT__Handover__Info__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Inter_RAT_Handover_Info_BSSGP.lengthIndicator", NULL, &Inter__RAT__Handover__Info__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Inter__RAT__Handover__Info__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Inter__RAT__Handover__Info__BSSGP_inter__RAT__Handover__Information_xer_ = { {"inter_RAT_Handover_Information>\n", "inter_RAT_Handover_Information>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Inter__RAT__Handover__Info__BSSGP_inter__RAT__Handover__Information_oer_ext_arr_[0] = {};
const int Inter__RAT__Handover__Info__BSSGP_inter__RAT__Handover__Information_oer_p_[0] = {};
const TTCN_OERdescriptor_t Inter__RAT__Handover__Info__BSSGP_inter__RAT__Handover__Information_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Inter__RAT__Handover__Info__BSSGP_inter__RAT__Handover__Information_oer_ext_arr_, 0, Inter__RAT__Handover__Info__BSSGP_inter__RAT__Handover__Information_oer_p_};
const TTCN_Typedescriptor_t Inter__RAT__Handover__Info__BSSGP_inter__RAT__Handover__Information_descr_ = { "@BSSGP_Types.Inter_RAT_Handover_Info_BSSGP.inter_RAT_Handover_Information", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &Inter__RAT__Handover__Info__BSSGP_inter__RAT__Handover__Information_xer_, &OCTETSTRING_json_, &Inter__RAT__Handover__Info__BSSGP_inter__RAT__Handover__Information_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Inter__RAT__Handover__Info__BSSGP_inter__RAT__Handover__Information_default_coding("RAW");
const TTCN_RAWdescriptor_t Inter__RAT__Handover__Info__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Inter__RAT__Handover__Info__BSSGP
const TTCN_Typedescriptor_t Inter__RAT__Handover__Info__BSSGP_descr_ = { "@BSSGP_Types.Inter_RAT_Handover_Info_BSSGP", NULL, &Inter__RAT__Handover__Info__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Inter__RAT__Handover__Info__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_inter__RAT__Handover__Info_default_coding("RAW");
const XERdescriptor_t       Page__Mode__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Page__Mode__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Page__Mode__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Page__Mode__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Page__Mode__BSSGP_iEI_oer_ext_arr_, 0, Page__Mode__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Page__Mode__BSSGP_iEI_descr_ = { "@BSSGP_Types.Page_Mode_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Page__Mode__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Page__Mode__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Page__Mode__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Page__Mode__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Page__Mode__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Page__Mode__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Page__Mode__BSSGP_ext_descr_ = { "@BSSGP_Types.Page_Mode_BSSGP.ext", &BITSTRING_ber_, &Page__Mode__BSSGP_ext_raw_, NULL, &Page__Mode__BSSGP_ext_xer_, &BITSTRING_json_, &Page__Mode__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Page__Mode__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Page__Mode__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Page__Mode__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Page__Mode__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Page_Mode_BSSGP.lengthIndicator", NULL, &Page__Mode__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Page__Mode__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Page__Mode__BSSGP_page__mode_xer_ = { {"page_mode>\n", "page_mode>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Page__Mode__BSSGP_page__mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Page__Mode__BSSGP_page__mode_descr_ = { "@BSSGP_Types.Page_Mode_BSSGP.page_mode", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &Page__Mode__BSSGP_page__mode_xer_, &BITSTRING_json_, &Page__Mode__BSSGP_page__mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Page__Mode__BSSGP_page__mode_default_coding("RAW");
const XERdescriptor_t       Page__Mode__BSSGP_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Page__Mode__BSSGP_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Page__Mode__BSSGP_reserved_descr_ = { "@BSSGP_Types.Page_Mode_BSSGP.reserved", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &Page__Mode__BSSGP_reserved_xer_, &BITSTRING_json_, &Page__Mode__BSSGP_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Page__Mode__BSSGP_reserved_default_coding("RAW");
const TTCN_RAWdescriptor_t Page__Mode__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Page__Mode__BSSGP
const TTCN_Typedescriptor_t Page__Mode__BSSGP_descr_ = { "@BSSGP_Types.Page_Mode_BSSGP", NULL, &Page__Mode__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Page__Mode__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_page__Mode__BSSGP_default_coding("RAW");
const XERdescriptor_t       Container__ID__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Container__ID__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Container__ID__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Container__ID__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Container__ID__BSSGP_iEI_oer_ext_arr_, 0, Container__ID__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Container__ID__BSSGP_iEI_descr_ = { "@BSSGP_Types.Container_ID_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Container__ID__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Container__ID__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Container__ID__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Container__ID__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Container__ID__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Container__ID__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Container__ID__BSSGP_ext_descr_ = { "@BSSGP_Types.Container_ID_BSSGP.ext", &BITSTRING_ber_, &Container__ID__BSSGP_ext_raw_, NULL, &Container__ID__BSSGP_ext_xer_, &BITSTRING_json_, &Container__ID__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Container__ID__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Container__ID__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Container__ID__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Container__ID__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Container_ID_BSSGP.lengthIndicator", NULL, &Container__ID__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Container__ID__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Container__ID__BSSGP_container__ID_xer_ = { {"container_ID>\n", "container_ID>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Container__ID__BSSGP_container__ID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Container__ID__BSSGP_container__ID_descr_ = { "@BSSGP_Types.Container_ID_BSSGP.container_ID", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &Container__ID__BSSGP_container__ID_xer_, &BITSTRING_json_, &Container__ID__BSSGP_container__ID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Container__ID__BSSGP_container__ID_default_coding("RAW");
const XERdescriptor_t       Container__ID__BSSGP_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Container__ID__BSSGP_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Container__ID__BSSGP_reserved_descr_ = { "@BSSGP_Types.Container_ID_BSSGP.reserved", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &Container__ID__BSSGP_reserved_xer_, &BITSTRING_json_, &Container__ID__BSSGP_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Container__ID__BSSGP_reserved_default_coding("RAW");
const TTCN_RAWdescriptor_t Container__ID__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Container__ID__BSSGP
const TTCN_Typedescriptor_t Container__ID__BSSGP_descr_ = { "@BSSGP_Types.Container_ID_BSSGP", NULL, &Container__ID__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Container__ID__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_container__ID_default_coding("RAW");
const XERdescriptor_t       Global__TFI__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Global__TFI__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Global__TFI__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Global__TFI__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Global__TFI__BSSGP_iEI_oer_ext_arr_, 0, Global__TFI__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Global__TFI__BSSGP_iEI_descr_ = { "@BSSGP_Types.Global_TFI_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Global__TFI__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Global__TFI__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__TFI__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Global__TFI__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Global__TFI__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Global__TFI__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Global__TFI__BSSGP_ext_descr_ = { "@BSSGP_Types.Global_TFI_BSSGP.ext", &BITSTRING_ber_, &Global__TFI__BSSGP_ext_raw_, NULL, &Global__TFI__BSSGP_ext_xer_, &BITSTRING_json_, &Global__TFI__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__TFI__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Global__TFI__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Global__TFI__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Global__TFI__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Global_TFI_BSSGP.lengthIndicator", NULL, &Global__TFI__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__TFI__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Global__TFI__BSSGP_global__TFI_xer_ = { {"global_TFI>\n", "global_TFI>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Global__TFI__BSSGP_global__TFI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Global__TFI__BSSGP_global__TFI_descr_ = { "@BSSGP_Types.Global_TFI_BSSGP.global_TFI", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &Global__TFI__BSSGP_global__TFI_xer_, &BITSTRING_json_, &Global__TFI__BSSGP_global__TFI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__TFI__BSSGP_global__TFI_default_coding("RAW");
const XERdescriptor_t       Global__TFI__BSSGP_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Global__TFI__BSSGP_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Global__TFI__BSSGP_reserved_descr_ = { "@BSSGP_Types.Global_TFI_BSSGP.reserved", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &Global__TFI__BSSGP_reserved_xer_, &BITSTRING_json_, &Global__TFI__BSSGP_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__TFI__BSSGP_reserved_default_coding("RAW");
const TTCN_RAWdescriptor_t Global__TFI__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Global__TFI__BSSGP
const TTCN_Typedescriptor_t Global__TFI__BSSGP_descr_ = { "@BSSGP_Types.Global_TFI_BSSGP", NULL, &Global__TFI__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Global__TFI__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_global__TFI_default_coding("RAW");
const XERdescriptor_t       PS__HandoverIndications_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PS__HandoverIndications_iEI_oer_ext_arr_[0] = {};
const int PS__HandoverIndications_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t PS__HandoverIndications_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PS__HandoverIndications_iEI_oer_ext_arr_, 0, PS__HandoverIndications_iEI_oer_p_};
const TTCN_Typedescriptor_t PS__HandoverIndications_iEI_descr_ = { "@BSSGP_Types.PS_HandoverIndications.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PS__HandoverIndications_iEI_xer_, &OCTETSTRING_json_, &PS__HandoverIndications_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__HandoverIndications_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t PS__HandoverIndications_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PS__HandoverIndications_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PS__HandoverIndications_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PS__HandoverIndications_ext_descr_ = { "@BSSGP_Types.PS_HandoverIndications.ext", &BITSTRING_ber_, &PS__HandoverIndications_ext_raw_, NULL, &PS__HandoverIndications_ext_xer_, &BITSTRING_json_, &PS__HandoverIndications_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__HandoverIndications_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t PS__HandoverIndications_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PS__HandoverIndications_lengthIndicator
const TTCN_Typedescriptor_t PS__HandoverIndications_lengthIndicator_descr_ = { "@BSSGP_Types.PS_HandoverIndications.lengthIndicator", NULL, &PS__HandoverIndications_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__HandoverIndications_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       PS__HandoverIndications_sI__PSI_xer_ = { {"sI_PSI>\n", "sI_PSI>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PS__HandoverIndications_sI__PSI_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PS__HandoverIndications_sI__PSI_descr_ = { "@BSSGP_Types.PS_HandoverIndications.sI_PSI", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &PS__HandoverIndications_sI__PSI_xer_, &BITSTRING_json_, &PS__HandoverIndications_sI__PSI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__HandoverIndications_sI__PSI_default_coding("RAW");
const XERdescriptor_t       PS__HandoverIndications_dMLC__Carriers_xer_ = { {"dMLC_Carriers>\n", "dMLC_Carriers>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PS__HandoverIndications_dMLC__Carriers_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PS__HandoverIndications_dMLC__Carriers_descr_ = { "@BSSGP_Types.PS_HandoverIndications.dMLC_Carriers", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &PS__HandoverIndications_dMLC__Carriers_xer_, &BITSTRING_json_, &PS__HandoverIndications_dMLC__Carriers_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__HandoverIndications_dMLC__Carriers_default_coding("RAW");
const XERdescriptor_t       PS__HandoverIndications_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PS__HandoverIndications_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PS__HandoverIndications_spare_descr_ = { "@BSSGP_Types.PS_HandoverIndications.spare", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &PS__HandoverIndications_spare_xer_, &BITSTRING_json_, &PS__HandoverIndications_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__HandoverIndications_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t PS__HandoverIndications_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PS__HandoverIndications
const TTCN_Typedescriptor_t PS__HandoverIndications_descr_ = { "@BSSGP_Types.PS_HandoverIndications", NULL, &PS__HandoverIndications_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__HandoverIndications_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_pS__HandoverIndications_default_coding("RAW");
const XERdescriptor_t       CS__Indication_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int CS__Indication_iEI_oer_ext_arr_[0] = {};
const int CS__Indication_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t CS__Indication_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CS__Indication_iEI_oer_ext_arr_, 0, CS__Indication_iEI_oer_p_};
const TTCN_Typedescriptor_t CS__Indication_iEI_descr_ = { "@BSSGP_Types.CS_Indication.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CS__Indication_iEI_xer_, &OCTETSTRING_json_, &CS__Indication_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CS__Indication_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t CS__Indication_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       CS__Indication_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CS__Indication_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CS__Indication_ext_descr_ = { "@BSSGP_Types.CS_Indication.ext", &BITSTRING_ber_, &CS__Indication_ext_raw_, NULL, &CS__Indication_ext_xer_, &BITSTRING_json_, &CS__Indication_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CS__Indication_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t CS__Indication_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for CS__Indication_lengthIndicator
const TTCN_Typedescriptor_t CS__Indication_lengthIndicator_descr_ = { "@BSSGP_Types.CS_Indication.lengthIndicator", NULL, &CS__Indication_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CS__Indication_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       CS__Indication_cS__IndicationContents_xer_ = { {"cS_IndicationContents>\n", "cS_IndicationContents>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int CS__Indication_cS__IndicationContents_oer_ext_arr_[0] = {};
const int CS__Indication_cS__IndicationContents_oer_p_[0] = {};
const TTCN_OERdescriptor_t CS__Indication_cS__IndicationContents_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CS__Indication_cS__IndicationContents_oer_ext_arr_, 0, CS__Indication_cS__IndicationContents_oer_p_};
const TTCN_Typedescriptor_t CS__Indication_cS__IndicationContents_descr_ = { "@BSSGP_Types.CS_Indication.cS_IndicationContents", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CS__Indication_cS__IndicationContents_xer_, &OCTETSTRING_json_, &CS__Indication_cS__IndicationContents_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CS__Indication_cS__IndicationContents_default_coding("RAW");
const TTCN_RAWdescriptor_t CS__Indication_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for CS__Indication
const TTCN_Typedescriptor_t CS__Indication_descr_ = { "@BSSGP_Types.CS_Indication", NULL, &CS__Indication_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CS__Indication_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_cS__Indication_default_coding("RAW");
const XERdescriptor_t       E__UTRAN__Inter__RAT__Handover__Info_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int E__UTRAN__Inter__RAT__Handover__Info_iEI_oer_ext_arr_[0] = {};
const int E__UTRAN__Inter__RAT__Handover__Info_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t E__UTRAN__Inter__RAT__Handover__Info_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, E__UTRAN__Inter__RAT__Handover__Info_iEI_oer_ext_arr_, 0, E__UTRAN__Inter__RAT__Handover__Info_iEI_oer_p_};
const TTCN_Typedescriptor_t E__UTRAN__Inter__RAT__Handover__Info_iEI_descr_ = { "@BSSGP_Types.E_UTRAN_Inter_RAT_Handover_Info.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &E__UTRAN__Inter__RAT__Handover__Info_iEI_xer_, &OCTETSTRING_json_, &E__UTRAN__Inter__RAT__Handover__Info_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING E__UTRAN__Inter__RAT__Handover__Info_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t E__UTRAN__Inter__RAT__Handover__Info_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       E__UTRAN__Inter__RAT__Handover__Info_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t E__UTRAN__Inter__RAT__Handover__Info_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t E__UTRAN__Inter__RAT__Handover__Info_ext_descr_ = { "@BSSGP_Types.E_UTRAN_Inter_RAT_Handover_Info.ext", &BITSTRING_ber_, &E__UTRAN__Inter__RAT__Handover__Info_ext_raw_, NULL, &E__UTRAN__Inter__RAT__Handover__Info_ext_xer_, &BITSTRING_json_, &E__UTRAN__Inter__RAT__Handover__Info_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING E__UTRAN__Inter__RAT__Handover__Info_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t E__UTRAN__Inter__RAT__Handover__Info_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for E__UTRAN__Inter__RAT__Handover__Info_lengthIndicator
const TTCN_Typedescriptor_t E__UTRAN__Inter__RAT__Handover__Info_lengthIndicator_descr_ = { "@BSSGP_Types.E_UTRAN_Inter_RAT_Handover_Info.lengthIndicator", NULL, &E__UTRAN__Inter__RAT__Handover__Info_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING E__UTRAN__Inter__RAT__Handover__Info_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       E__UTRAN__Inter__RAT__Handover__Info_ue__EUTRA__Capability_xer_ = { {"ue_EUTRA_Capability>\n", "ue_EUTRA_Capability>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int E__UTRAN__Inter__RAT__Handover__Info_ue__EUTRA__Capability_oer_ext_arr_[0] = {};
const int E__UTRAN__Inter__RAT__Handover__Info_ue__EUTRA__Capability_oer_p_[0] = {};
const TTCN_OERdescriptor_t E__UTRAN__Inter__RAT__Handover__Info_ue__EUTRA__Capability_oer_ = { -1, TRUE, -1, FALSE, 0, 0, E__UTRAN__Inter__RAT__Handover__Info_ue__EUTRA__Capability_oer_ext_arr_, 0, E__UTRAN__Inter__RAT__Handover__Info_ue__EUTRA__Capability_oer_p_};
const TTCN_Typedescriptor_t E__UTRAN__Inter__RAT__Handover__Info_ue__EUTRA__Capability_descr_ = { "@BSSGP_Types.E_UTRAN_Inter_RAT_Handover_Info.ue_EUTRA_Capability", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &E__UTRAN__Inter__RAT__Handover__Info_ue__EUTRA__Capability_xer_, &OCTETSTRING_json_, &E__UTRAN__Inter__RAT__Handover__Info_ue__EUTRA__Capability_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING E__UTRAN__Inter__RAT__Handover__Info_ue__EUTRA__Capability_default_coding("RAW");
const TTCN_RAWdescriptor_t E__UTRAN__Inter__RAT__Handover__Info_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for E__UTRAN__Inter__RAT__Handover__Info
const TTCN_Typedescriptor_t E__UTRAN__Inter__RAT__Handover__Info_descr_ = { "@BSSGP_Types.E_UTRAN_Inter_RAT_Handover_Info", NULL, &E__UTRAN__Inter__RAT__Handover__Info_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING E__UTRAN__Inter__RAT__Handover__Info_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_e__UTRAN__Inter__RAT__Handover__Info_default_coding("RAW");
const XERdescriptor_t       IRAT__Measurement__Configuration_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int IRAT__Measurement__Configuration_iEI_oer_ext_arr_[0] = {};
const int IRAT__Measurement__Configuration_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t IRAT__Measurement__Configuration_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IRAT__Measurement__Configuration_iEI_oer_ext_arr_, 0, IRAT__Measurement__Configuration_iEI_oer_p_};
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_iEI_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &IRAT__Measurement__Configuration_iEI_xer_, &OCTETSTRING_json_, &IRAT__Measurement__Configuration_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t IRAT__Measurement__Configuration_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IRAT__Measurement__Configuration_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IRAT__Measurement__Configuration_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_ext_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration.ext", &BITSTRING_ber_, &IRAT__Measurement__Configuration_ext_raw_, NULL, &IRAT__Measurement__Configuration_ext_xer_, &BITSTRING_json_, &IRAT__Measurement__Configuration_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t IRAT__Measurement__Configuration_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IRAT__Measurement__Configuration_lengthIndicator
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_lengthIndicator_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration.lengthIndicator", NULL, &IRAT__Measurement__Configuration_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       IRAT__Measurement__Configuration_reportingThreshold_xer_ = { {"reportingThreshold>\n", "reportingThreshold>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_reportingThreshold_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration.reportingThreshold", &INTEGER_ber_, &General__Types::INT6b_raw_, &INTEGER_text_, &IRAT__Measurement__Configuration_reportingThreshold_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_reportingThreshold_default_coding("RAW");
const XERdescriptor_t       IRAT__Measurement__Configuration_repQuant_xer_ = { {"repQuant>\n", "repQuant>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IRAT__Measurement__Configuration_repQuant_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_repQuant_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration.repQuant", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &IRAT__Measurement__Configuration_repQuant_xer_, &BITSTRING_json_, &IRAT__Measurement__Configuration_repQuant_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_repQuant_default_coding("RAW");
const XERdescriptor_t       IRAT__Measurement__Configuration_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IRAT__Measurement__Configuration_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_spare_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration.spare", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &IRAT__Measurement__Configuration_spare_xer_, &BITSTRING_json_, &IRAT__Measurement__Configuration_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_spare_default_coding("RAW");
const XERdescriptor_t       IRAT__Measurement__Configuration_measurementDuration_xer_ = { {"measurementDuration>\n", "measurementDuration>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_measurementDuration_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration.measurementDuration", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &IRAT__Measurement__Configuration_measurementDuration_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_measurementDuration_default_coding("RAW");
const TTCN_RAWdescriptor_t Measurement__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Measurement__List
const TTCN_Typedescriptor_t Measurement__List_descr_ = { "@BSSGP_Types.Measurement_List", NULL, &Measurement__List_raw_, NULL, NULL, NULL, NULL, NULL, &Measurement_descr_, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       Measurement_e__ARFCN_xer_ = { {"e_ARFCN>\n", "e_ARFCN>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Measurement_e__ARFCN_descr_ = { "@BSSGP_Types.Measurement.e_ARFCN", &INTEGER_ber_, &General__Types::LIN2__BO__LAST_raw_, &INTEGER_text_, &Measurement_e__ARFCN_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Measurement_e__ARFCN_default_coding("RAW");
const XERdescriptor_t       Measurement_measurementBandwidth_xer_ = { {"measurementBandwidth>\n", "measurementBandwidth>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Measurement_measurementBandwidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Measurement_measurementBandwidth_descr_ = { "@BSSGP_Types.Measurement.measurementBandwidth", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &Measurement_measurementBandwidth_xer_, &BITSTRING_json_, &Measurement_measurementBandwidth_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Measurement_measurementBandwidth_default_coding("RAW");
const XERdescriptor_t       Measurement_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Measurement_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Measurement_spare_descr_ = { "@BSSGP_Types.Measurement.spare", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &Measurement_spare_xer_, &BITSTRING_json_, &Measurement_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Measurement_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Measurement_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Measurement
const TTCN_Typedescriptor_t Measurement_descr_ = { "@BSSGP_Types.Measurement", NULL, &Measurement_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Measurement_default_coding("RAW");
UNIVERSAL_CHARSTRING Measurement__List_0_default_coding("RAW");
UNIVERSAL_CHARSTRING Measurement__List_default_coding("RAW");
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_measurement__List_default_coding("RAW");
const TTCN_RAWdescriptor_t IRAT__Measurement__Configuration_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IRAT__Measurement__Configuration
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration", NULL, &IRAT__Measurement__Configuration_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_iRAT__Measurement__Configuration_default_coding("RAW");
const XERdescriptor_t       Source__Cell__ID_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Source__Cell__ID_iEI_oer_ext_arr_[0] = {};
const int Source__Cell__ID_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Source__Cell__ID_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Source__Cell__ID_iEI_oer_ext_arr_, 0, Source__Cell__ID_iEI_oer_p_};
const TTCN_Typedescriptor_t Source__Cell__ID_iEI_descr_ = { "@BSSGP_Types.Source_Cell_ID.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Source__Cell__ID_iEI_xer_, &OCTETSTRING_json_, &Source__Cell__ID_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__Cell__ID_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Source__Cell__ID_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Source__Cell__ID_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Source__Cell__ID_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Source__Cell__ID_ext_descr_ = { "@BSSGP_Types.Source_Cell_ID.ext", &BITSTRING_ber_, &Source__Cell__ID_ext_raw_, NULL, &Source__Cell__ID_ext_xer_, &BITSTRING_json_, &Source__Cell__ID_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__Cell__ID_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Source__Cell__ID_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Source__Cell__ID_lengthIndicator
const TTCN_Typedescriptor_t Source__Cell__ID_lengthIndicator_descr_ = { "@BSSGP_Types.Source_Cell_ID.lengthIndicator", NULL, &Source__Cell__ID_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__Cell__ID_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       TrackingAreaIdentity__BSSGP_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TrackingAreaIdentity__BSSGP_mccDigit1_descr_ = { "@BSSGP_Types.TrackingAreaIdentity_BSSGP.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &TrackingAreaIdentity__BSSGP_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TrackingAreaIdentity__BSSGP_mccDigit1_default_coding("RAW");
const XERdescriptor_t       TrackingAreaIdentity__BSSGP_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TrackingAreaIdentity__BSSGP_mccDigit2_descr_ = { "@BSSGP_Types.TrackingAreaIdentity_BSSGP.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &TrackingAreaIdentity__BSSGP_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TrackingAreaIdentity__BSSGP_mccDigit2_default_coding("RAW");
const XERdescriptor_t       TrackingAreaIdentity__BSSGP_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TrackingAreaIdentity__BSSGP_mccDigit3_descr_ = { "@BSSGP_Types.TrackingAreaIdentity_BSSGP.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &TrackingAreaIdentity__BSSGP_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TrackingAreaIdentity__BSSGP_mccDigit3_default_coding("RAW");
const XERdescriptor_t       TrackingAreaIdentity__BSSGP_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TrackingAreaIdentity__BSSGP_mncDigit3_descr_ = { "@BSSGP_Types.TrackingAreaIdentity_BSSGP.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &TrackingAreaIdentity__BSSGP_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TrackingAreaIdentity__BSSGP_mncDigit3_default_coding("RAW");
const XERdescriptor_t       TrackingAreaIdentity__BSSGP_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TrackingAreaIdentity__BSSGP_mncDigit1_descr_ = { "@BSSGP_Types.TrackingAreaIdentity_BSSGP.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &TrackingAreaIdentity__BSSGP_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TrackingAreaIdentity__BSSGP_mncDigit1_default_coding("RAW");
const XERdescriptor_t       TrackingAreaIdentity__BSSGP_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t TrackingAreaIdentity__BSSGP_mncDigit2_descr_ = { "@BSSGP_Types.TrackingAreaIdentity_BSSGP.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &TrackingAreaIdentity__BSSGP_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TrackingAreaIdentity__BSSGP_mncDigit2_default_coding("RAW");
const XERdescriptor_t       TrackingAreaIdentity__BSSGP_tAC_xer_ = { {"tAC>\n", "tAC>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int TrackingAreaIdentity__BSSGP_tAC_oer_ext_arr_[0] = {};
const int TrackingAreaIdentity__BSSGP_tAC_oer_p_[0] = {};
const TTCN_OERdescriptor_t TrackingAreaIdentity__BSSGP_tAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, TrackingAreaIdentity__BSSGP_tAC_oer_ext_arr_, 0, TrackingAreaIdentity__BSSGP_tAC_oer_p_};
const TTCN_Typedescriptor_t TrackingAreaIdentity__BSSGP_tAC_descr_ = { "@BSSGP_Types.TrackingAreaIdentity_BSSGP.tAC", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &TrackingAreaIdentity__BSSGP_tAC_xer_, &OCTETSTRING_json_, &TrackingAreaIdentity__BSSGP_tAC_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TrackingAreaIdentity__BSSGP_tAC_default_coding("RAW");
const TTCN_RAWdescriptor_t TrackingAreaIdentity__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for TrackingAreaIdentity__BSSGP
const TTCN_Typedescriptor_t TrackingAreaIdentity__BSSGP_descr_ = { "@BSSGP_Types.TrackingAreaIdentity_BSSGP", NULL, &TrackingAreaIdentity__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING TrackingAreaIdentity__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__Cell__ID_tracking__Area__Identity_default_coding("RAW");
const XERdescriptor_t       ECGI__BSSGP_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ECGI__BSSGP_mccDigit1_descr_ = { "@BSSGP_Types.ECGI_BSSGP.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &ECGI__BSSGP_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ECGI__BSSGP_mccDigit1_default_coding("RAW");
const XERdescriptor_t       ECGI__BSSGP_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ECGI__BSSGP_mccDigit2_descr_ = { "@BSSGP_Types.ECGI_BSSGP.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &ECGI__BSSGP_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ECGI__BSSGP_mccDigit2_default_coding("RAW");
const XERdescriptor_t       ECGI__BSSGP_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ECGI__BSSGP_mccDigit3_descr_ = { "@BSSGP_Types.ECGI_BSSGP.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &ECGI__BSSGP_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ECGI__BSSGP_mccDigit3_default_coding("RAW");
const XERdescriptor_t       ECGI__BSSGP_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ECGI__BSSGP_mncDigit3_descr_ = { "@BSSGP_Types.ECGI_BSSGP.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &ECGI__BSSGP_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ECGI__BSSGP_mncDigit3_default_coding("RAW");
const XERdescriptor_t       ECGI__BSSGP_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ECGI__BSSGP_mncDigit1_descr_ = { "@BSSGP_Types.ECGI_BSSGP.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &ECGI__BSSGP_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ECGI__BSSGP_mncDigit1_default_coding("RAW");
const XERdescriptor_t       ECGI__BSSGP_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ECGI__BSSGP_mncDigit2_descr_ = { "@BSSGP_Types.ECGI_BSSGP.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &ECGI__BSSGP_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ECGI__BSSGP_mncDigit2_default_coding("RAW");
const TTCN_RAWdescriptor_t ECGI__BSSGP_spare_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       ECGI__BSSGP_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ECGI__BSSGP_spare_descr_ = { "@BSSGP_Types.ECGI_BSSGP.spare", NULL, &ECGI__BSSGP_spare_raw_, NULL, &ECGI__BSSGP_spare_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ECGI__BSSGP_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t ECGI__BSSGP_eCI_raw_ = {28,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       ECGI__BSSGP_eCI_xer_ = { {"eCI>\n", "eCI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ECGI__BSSGP_eCI_descr_ = { "@BSSGP_Types.ECGI_BSSGP.eCI", &INTEGER_ber_, &ECGI__BSSGP_eCI_raw_, &INTEGER_text_, &ECGI__BSSGP_eCI_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ECGI__BSSGP_eCI_default_coding("RAW");
const TTCN_RAWdescriptor_t ECGI__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ECGI__BSSGP
const TTCN_Typedescriptor_t ECGI__BSSGP_descr_ = { "@BSSGP_Types.ECGI_BSSGP", NULL, &ECGI__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ECGI__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__Cell__ID_eUTRAN__CGI_default_coding("RAW");
const XERdescriptor_t       Source__Cell__ID_globaleNBID_xer_ = { {"globaleNBID>\n", "globaleNBID>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Source__Cell__ID_globaleNBID_oer_ext_arr_[0] = {};
const int Source__Cell__ID_globaleNBID_oer_p_[0] = {};
const TTCN_OERdescriptor_t Source__Cell__ID_globaleNBID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Source__Cell__ID_globaleNBID_oer_ext_arr_, 0, Source__Cell__ID_globaleNBID_oer_p_};
const TTCN_Typedescriptor_t Source__Cell__ID_globaleNBID_descr_ = { "@BSSGP_Types.Source_Cell_ID.globaleNBID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &Source__Cell__ID_globaleNBID_xer_, &OCTETSTRING_json_, &Source__Cell__ID_globaleNBID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__Cell__ID_globaleNBID_default_coding("RAW");
const TTCN_RAWdescriptor_t Source__Cell__ID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Source__Cell__ID
const TTCN_Typedescriptor_t Source__Cell__ID_descr_ = { "@BSSGP_Types.Source_Cell_ID", NULL, &Source__Cell__ID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__Cell__ID_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_source__Cell__ID_default_coding("RAW");
const XERdescriptor_t       IRAT__Measurement__Configuration__Extended__eARFCNs_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int IRAT__Measurement__Configuration__Extended__eARFCNs_iEI_oer_ext_arr_[0] = {};
const int IRAT__Measurement__Configuration__Extended__eARFCNs_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IRAT__Measurement__Configuration__Extended__eARFCNs_iEI_oer_ext_arr_, 0, IRAT__Measurement__Configuration__Extended__eARFCNs_iEI_oer_p_};
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_iEI_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration_Extended_eARFCNs.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &IRAT__Measurement__Configuration__Extended__eARFCNs_iEI_xer_, &OCTETSTRING_json_, &IRAT__Measurement__Configuration__Extended__eARFCNs_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration__Extended__eARFCNs_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IRAT__Measurement__Configuration__Extended__eARFCNs_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_ext_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration_Extended_eARFCNs.ext", &BITSTRING_ber_, &IRAT__Measurement__Configuration__Extended__eARFCNs_ext_raw_, NULL, &IRAT__Measurement__Configuration__Extended__eARFCNs_ext_xer_, &BITSTRING_json_, &IRAT__Measurement__Configuration__Extended__eARFCNs_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration__Extended__eARFCNs_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IRAT__Measurement__Configuration__Extended__eARFCNs_lengthIndicator
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_lengthIndicator_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration_Extended_eARFCNs.lengthIndicator", NULL, &IRAT__Measurement__Configuration__Extended__eARFCNs_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration__Extended__eARFCNs_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       IRAT__Measurement__Configuration__Extended__eARFCNs_reportingThreshold_xer_ = { {"reportingThreshold>\n", "reportingThreshold>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_reportingThreshold_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_reportingThreshold_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration_Extended_eARFCNs.reportingThreshold", &INTEGER_ber_, &General__Types::INT6b_raw_, &INTEGER_text_, &IRAT__Measurement__Configuration__Extended__eARFCNs_reportingThreshold_xer_, &INTEGER_json_, &IRAT__Measurement__Configuration__Extended__eARFCNs_reportingThreshold_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration__Extended__eARFCNs_reportingThreshold_default_coding("RAW");
const XERdescriptor_t       IRAT__Measurement__Configuration__Extended__eARFCNs_repQuant_xer_ = { {"repQuant>\n", "repQuant>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_repQuant_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_repQuant_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration_Extended_eARFCNs.repQuant", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &IRAT__Measurement__Configuration__Extended__eARFCNs_repQuant_xer_, &BITSTRING_json_, &IRAT__Measurement__Configuration__Extended__eARFCNs_repQuant_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration__Extended__eARFCNs_repQuant_default_coding("RAW");
const XERdescriptor_t       IRAT__Measurement__Configuration__Extended__eARFCNs_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_spare_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration_Extended_eARFCNs.spare", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &IRAT__Measurement__Configuration__Extended__eARFCNs_spare_xer_, &BITSTRING_json_, &IRAT__Measurement__Configuration__Extended__eARFCNs_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration__Extended__eARFCNs_spare_default_coding("RAW");
const XERdescriptor_t       IRAT__Measurement__Configuration__Extended__eARFCNs_measurementDuration_xer_ = { {"measurementDuration>\n", "measurementDuration>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_measurementDuration_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_measurementDuration_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration_Extended_eARFCNs.measurementDuration", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &IRAT__Measurement__Configuration__Extended__eARFCNs_measurementDuration_xer_, &INTEGER_json_, &IRAT__Measurement__Configuration__Extended__eARFCNs_measurementDuration_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration__Extended__eARFCNs_measurementDuration_default_coding("RAW");
const TTCN_RAWdescriptor_t Measurement__List__Extended_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Measurement__List__Extended
const TTCN_Typedescriptor_t Measurement__List__Extended_descr_ = { "@BSSGP_Types.Measurement_List_Extended", NULL, &Measurement__List__Extended_raw_, NULL, NULL, NULL, NULL, NULL, &Measurement__Extended_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t Measurement__Extended_e__ARFCN_raw_ = {18,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Measurement__Extended_e__ARFCN_xer_ = { {"e_ARFCN>\n", "e_ARFCN>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Measurement__Extended_e__ARFCN_descr_ = { "@BSSGP_Types.Measurement_Extended.e_ARFCN", &INTEGER_ber_, &Measurement__Extended_e__ARFCN_raw_, &INTEGER_text_, &Measurement__Extended_e__ARFCN_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Measurement__Extended_e__ARFCN_default_coding("RAW");
const TTCN_RAWdescriptor_t Measurement__Extended_spare_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Measurement__Extended_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Measurement__Extended_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Measurement__Extended_spare_descr_ = { "@BSSGP_Types.Measurement_Extended.spare", &BITSTRING_ber_, &Measurement__Extended_spare_raw_, NULL, &Measurement__Extended_spare_xer_, &BITSTRING_json_, &Measurement__Extended_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Measurement__Extended_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Measurement__Extended_measurementBandwidth_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Measurement__Extended_measurementBandwidth_xer_ = { {"measurementBandwidth>\n", "measurementBandwidth>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Measurement__Extended_measurementBandwidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Measurement__Extended_measurementBandwidth_descr_ = { "@BSSGP_Types.Measurement_Extended.measurementBandwidth", &BITSTRING_ber_, &Measurement__Extended_measurementBandwidth_raw_, NULL, &Measurement__Extended_measurementBandwidth_xer_, &BITSTRING_json_, &Measurement__Extended_measurementBandwidth_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Measurement__Extended_measurementBandwidth_default_coding("RAW");
const TTCN_RAWdescriptor_t Measurement__Extended_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Measurement__Extended
const TTCN_Typedescriptor_t Measurement__Extended_descr_ = { "@BSSGP_Types.Measurement_Extended", NULL, &Measurement__Extended_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Measurement__Extended_default_coding("RAW");
UNIVERSAL_CHARSTRING Measurement__List__Extended_0_default_coding("RAW");
UNIVERSAL_CHARSTRING Measurement__List__Extended_default_coding("RAW");
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration__Extended__eARFCNs_measurement__List_default_coding("RAW");
const TTCN_RAWdescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IRAT__Measurement__Configuration__Extended__eARFCNs
const TTCN_Typedescriptor_t IRAT__Measurement__Configuration__Extended__eARFCNs_descr_ = { "@BSSGP_Types.IRAT_Measurement_Configuration_Extended_eARFCNs", NULL, &IRAT__Measurement__Configuration__Extended__eARFCNs_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration__Extended__eARFCNs_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_iRAT__Measurement__Configuration__Extended__eARFCNs_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__Contents_default_coding("RAW");
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_source__BSS__to__Target__BSS__Transparent__Container__Contents_default_coding("RAW");
const TTCN_RAWdescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Source__BSS__to__Target__BSS__Transparent__Container__BSSGP
const TTCN_Typedescriptor_t Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_descr_ = { "@BSSGP_Types.Source_BSS_to_Target_BSS_Transparent_Container_BSSGP", NULL, &Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__BSS__to__Target__BSS__Transparent__Container__BSSGP_default_coding("RAW");
const XERdescriptor_t       Target__BSS__to__Source__BSS__Transparent__Container_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Target__BSS__to__Source__BSS__Transparent__Container_iEI_oer_ext_arr_[0] = {};
const int Target__BSS__to__Source__BSS__Transparent__Container_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Target__BSS__to__Source__BSS__Transparent__Container_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Target__BSS__to__Source__BSS__Transparent__Container_iEI_oer_ext_arr_, 0, Target__BSS__to__Source__BSS__Transparent__Container_iEI_oer_p_};
const TTCN_Typedescriptor_t Target__BSS__to__Source__BSS__Transparent__Container_iEI_descr_ = { "@BSSGP_Types.Target_BSS_to_Source_BSS_Transparent_Container.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Target__BSS__to__Source__BSS__Transparent__Container_iEI_xer_, &OCTETSTRING_json_, &Target__BSS__to__Source__BSS__Transparent__Container_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Target__BSS__to__Source__BSS__Transparent__Container_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Target__BSS__to__Source__BSS__Transparent__Container_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Target__BSS__to__Source__BSS__Transparent__Container_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Target__BSS__to__Source__BSS__Transparent__Container_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Target__BSS__to__Source__BSS__Transparent__Container_ext_descr_ = { "@BSSGP_Types.Target_BSS_to_Source_BSS_Transparent_Container.ext", &BITSTRING_ber_, &Target__BSS__to__Source__BSS__Transparent__Container_ext_raw_, NULL, &Target__BSS__to__Source__BSS__Transparent__Container_ext_xer_, &BITSTRING_json_, &Target__BSS__to__Source__BSS__Transparent__Container_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Target__BSS__to__Source__BSS__Transparent__Container_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Target__BSS__to__Source__BSS__Transparent__Container_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Target__BSS__to__Source__BSS__Transparent__Container_lengthIndicator
const TTCN_Typedescriptor_t Target__BSS__to__Source__BSS__Transparent__Container_lengthIndicator_descr_ = { "@BSSGP_Types.Target_BSS_to_Source_BSS_Transparent_Container.lengthIndicator", NULL, &Target__BSS__to__Source__BSS__Transparent__Container_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Target__BSS__to__Source__BSS__Transparent__Container_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t Target__BSS__to__Source__BSS__Transparent__Container__Contents_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Target__BSS__to__Source__BSS__Transparent__Container__Contents
const TTCN_Typedescriptor_t Target__BSS__to__Source__BSS__Transparent__Container__Contents_descr_ = { "@BSSGP_Types.Target_BSS_to_Source_BSS_Transparent_Container_Contents", NULL, &Target__BSS__to__Source__BSS__Transparent__Container__Contents_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       PS__Handover__Command__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PS__Handover__Command__BSSGP_iEI_oer_ext_arr_[0] = {};
const int PS__Handover__Command__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t PS__Handover__Command__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PS__Handover__Command__BSSGP_iEI_oer_ext_arr_, 0, PS__Handover__Command__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t PS__Handover__Command__BSSGP_iEI_descr_ = { "@BSSGP_Types.PS_Handover_Command_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PS__Handover__Command__BSSGP_iEI_xer_, &OCTETSTRING_json_, &PS__Handover__Command__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__Handover__Command__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t PS__Handover__Command__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PS__Handover__Command__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PS__Handover__Command__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PS__Handover__Command__BSSGP_ext_descr_ = { "@BSSGP_Types.PS_Handover_Command_BSSGP.ext", &BITSTRING_ber_, &PS__Handover__Command__BSSGP_ext_raw_, NULL, &PS__Handover__Command__BSSGP_ext_xer_, &BITSTRING_json_, &PS__Handover__Command__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__Handover__Command__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t PS__Handover__Command__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PS__Handover__Command__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t PS__Handover__Command__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.PS_Handover_Command_BSSGP.lengthIndicator", NULL, &PS__Handover__Command__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__Handover__Command__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       PS__Handover__Command__BSSGP_pS__Handover__Command__radio__interface__message_xer_ = { {"pS_Handover_Command_radio_interface_message>\n", "pS_Handover_Command_radio_interface_message>\n"}, {45, 45}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PS__Handover__Command__BSSGP_pS__Handover__Command__radio__interface__message_oer_ext_arr_[0] = {};
const int PS__Handover__Command__BSSGP_pS__Handover__Command__radio__interface__message_oer_p_[0] = {};
const TTCN_OERdescriptor_t PS__Handover__Command__BSSGP_pS__Handover__Command__radio__interface__message_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PS__Handover__Command__BSSGP_pS__Handover__Command__radio__interface__message_oer_ext_arr_, 0, PS__Handover__Command__BSSGP_pS__Handover__Command__radio__interface__message_oer_p_};
const TTCN_Typedescriptor_t PS__Handover__Command__BSSGP_pS__Handover__Command__radio__interface__message_descr_ = { "@BSSGP_Types.PS_Handover_Command_BSSGP.pS_Handover_Command_radio_interface_message", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &PS__Handover__Command__BSSGP_pS__Handover__Command__radio__interface__message_xer_, &OCTETSTRING_json_, &PS__Handover__Command__BSSGP_pS__Handover__Command__radio__interface__message_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__Handover__Command__BSSGP_pS__Handover__Command__radio__interface__message_default_coding("RAW");
const TTCN_RAWdescriptor_t PS__Handover__Command__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PS__Handover__Command__BSSGP
const TTCN_Typedescriptor_t PS__Handover__Command__BSSGP_descr_ = { "@BSSGP_Types.PS_Handover_Command_BSSGP", NULL, &PS__Handover__Command__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PS__Handover__Command__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Target__BSS__to__Source__BSS__Transparent__Container__Contents_pS__Handover__Command_default_coding("RAW");
const XERdescriptor_t       SI__PSI__Container_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SI__PSI__Container_iEI_oer_ext_arr_[0] = {};
const int SI__PSI__Container_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t SI__PSI__Container_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SI__PSI__Container_iEI_oer_ext_arr_, 0, SI__PSI__Container_iEI_oer_p_};
const TTCN_Typedescriptor_t SI__PSI__Container_iEI_descr_ = { "@BSSGP_Types.SI_PSI_Container.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SI__PSI__Container_iEI_xer_, &OCTETSTRING_json_, &SI__PSI__Container_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI__PSI__Container_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t SI__PSI__Container_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       SI__PSI__Container_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SI__PSI__Container_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SI__PSI__Container_ext_descr_ = { "@BSSGP_Types.SI_PSI_Container.ext", &BITSTRING_ber_, &SI__PSI__Container_ext_raw_, NULL, &SI__PSI__Container_ext_xer_, &BITSTRING_json_, &SI__PSI__Container_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI__PSI__Container_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t SI__PSI__Container_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SI__PSI__Container_lengthIndicator
const TTCN_Typedescriptor_t SI__PSI__Container_lengthIndicator_descr_ = { "@BSSGP_Types.SI_PSI_Container.lengthIndicator", NULL, &SI__PSI__Container_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI__PSI__Container_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       SI__PSI__Container_typeField_xer_ = { {"typeField>\n", "typeField>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SI__PSI__Container_typeField_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SI__PSI__Container_typeField_descr_ = { "@BSSGP_Types.SI_PSI_Container.typeField", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &SI__PSI__Container_typeField_xer_, &BITSTRING_json_, &SI__PSI__Container_typeField_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI__PSI__Container_typeField_default_coding("RAW");
const TTCN_RAWdescriptor_t SI__PSI__ContainerValue_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SI__PSI__ContainerValue
const TTCN_Typedescriptor_t SI__PSI__ContainerValue_descr_ = { "@BSSGP_Types.SI_PSI_ContainerValue", NULL, &SI__PSI__ContainerValue_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t SI__message__Container_number__of__SI_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       SI__message__Container_number__of__SI_xer_ = { {"number_of_SI>\n", "number_of_SI>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t SI__message__Container_number__of__SI_descr_ = { "@BSSGP_Types.SI_message_Container.number_of_SI", &INTEGER_ber_, &SI__message__Container_number__of__SI_raw_, &INTEGER_text_, &SI__message__Container_number__of__SI_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI__message__Container_number__of__SI_default_coding("RAW");
const TTCN_RAWdescriptor_t SI__message__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SI__message__List
const TTCN_Typedescriptor_t SI__message__List_descr_ = { "@BSSGP_Types.SI_message_List", NULL, &SI__message__List_raw_, NULL, NULL, NULL, NULL, NULL, &SI__message_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t SI__message_raw_ = {168,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       SI__message_xer_ = { {"SI_message>\n", "SI_message>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SI__message_oer_ext_arr_[0] = {};
const int SI__message_oer_p_[0] = {};
const TTCN_OERdescriptor_t SI__message_oer_ = { -1, TRUE, 21, FALSE, 0, 0, SI__message_oer_ext_arr_, 0, SI__message_oer_p_};
const TTCN_Typedescriptor_t SI__message_descr_ = { "@BSSGP_Types.SI_message", &OCTETSTRING_ber_, &SI__message_raw_, &OCTETSTRING_text_, &SI__message_xer_, &OCTETSTRING_json_, &SI__message_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI__message_default_coding("RAW");
const XERdescriptor_t       SI__message__List_0_xer_ = { {"SI_message>\n", "SI_message>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SI__message__List_0_oer_ext_arr_[0] = {};
const int SI__message__List_0_oer_p_[0] = {};
const TTCN_OERdescriptor_t SI__message__List_0_oer_ = { -1, TRUE, 21, FALSE, 0, 0, SI__message__List_0_oer_ext_arr_, 0, SI__message__List_0_oer_p_};
const TTCN_Typedescriptor_t SI__message__List_0_descr_ = { "@BSSGP_Types.SI_message_List.<oftype>", &OCTETSTRING_ber_, &SI__message_raw_, &OCTETSTRING_text_, &SI__message__List_0_xer_, &OCTETSTRING_json_, &SI__message__List_0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI__message__List_0_default_coding("RAW");
UNIVERSAL_CHARSTRING SI__message__List_default_coding("RAW");
UNIVERSAL_CHARSTRING SI__message__Container_sI__message__List_default_coding("RAW");
const TTCN_RAWdescriptor_t SI__message__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SI__message__Container
const TTCN_Typedescriptor_t SI__message__Container_descr_ = { "@BSSGP_Types.SI_message_Container", NULL, &SI__message__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI__message__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING SI__PSI__ContainerValue_sI__message__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t PSI__message__Container_number__of__PSI_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PSI__message__Container_number__of__PSI_xer_ = { {"number_of_PSI>\n", "number_of_PSI>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t PSI__message__Container_number__of__PSI_descr_ = { "@BSSGP_Types.PSI_message_Container.number_of_PSI", &INTEGER_ber_, &PSI__message__Container_number__of__PSI_raw_, &INTEGER_text_, &PSI__message__Container_number__of__PSI_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PSI__message__Container_number__of__PSI_default_coding("RAW");
const TTCN_RAWdescriptor_t PSI__message__List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PSI__message__List
const TTCN_Typedescriptor_t PSI__message__List_descr_ = { "@BSSGP_Types.PSI_message_List", NULL, &PSI__message__List_raw_, NULL, NULL, NULL, NULL, NULL, &PSI__message_descr_, TTCN_Typedescriptor_t::DONTCARE };
const TTCN_RAWdescriptor_t PSI__message_raw_ = {176,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PSI__message_xer_ = { {"PSI_message>\n", "PSI_message>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PSI__message_oer_ext_arr_[0] = {};
const int PSI__message_oer_p_[0] = {};
const TTCN_OERdescriptor_t PSI__message_oer_ = { -1, TRUE, 22, FALSE, 0, 0, PSI__message_oer_ext_arr_, 0, PSI__message_oer_p_};
const TTCN_Typedescriptor_t PSI__message_descr_ = { "@BSSGP_Types.PSI_message", &OCTETSTRING_ber_, &PSI__message_raw_, &OCTETSTRING_text_, &PSI__message_xer_, &OCTETSTRING_json_, &PSI__message_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PSI__message_default_coding("RAW");
const XERdescriptor_t       PSI__message__List_0_xer_ = { {"PSI_message>\n", "PSI_message>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PSI__message__List_0_oer_ext_arr_[0] = {};
const int PSI__message__List_0_oer_p_[0] = {};
const TTCN_OERdescriptor_t PSI__message__List_0_oer_ = { -1, TRUE, 22, FALSE, 0, 0, PSI__message__List_0_oer_ext_arr_, 0, PSI__message__List_0_oer_p_};
const TTCN_Typedescriptor_t PSI__message__List_0_descr_ = { "@BSSGP_Types.PSI_message_List.<oftype>", &OCTETSTRING_ber_, &PSI__message_raw_, &OCTETSTRING_text_, &PSI__message__List_0_xer_, &OCTETSTRING_json_, &PSI__message__List_0_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PSI__message__List_0_default_coding("RAW");
UNIVERSAL_CHARSTRING PSI__message__List_default_coding("RAW");
UNIVERSAL_CHARSTRING PSI__message__Container_pSI__message__List_default_coding("RAW");
const TTCN_RAWdescriptor_t PSI__message__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PSI__message__Container
const TTCN_Typedescriptor_t PSI__message__Container_descr_ = { "@BSSGP_Types.PSI_message_Container", NULL, &PSI__message__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PSI__message__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING SI__PSI__ContainerValue_pSI__message__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING SI__PSI__ContainerValue_default_coding("RAW");
const TTCN_RAWdescriptor_t SI__PSI__Container_sI__PSI__ContainerValue_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SI__PSI__Container_sI__PSI__ContainerValue
const TTCN_Typedescriptor_t SI__PSI__Container_sI__PSI__ContainerValue_descr_ = { "@BSSGP_Types.SI_PSI_Container.sI_PSI_ContainerValue", NULL, &SI__PSI__Container_sI__PSI__ContainerValue_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI__PSI__Container_sI__PSI__ContainerValue_default_coding("RAW");
const TTCN_RAWdescriptor_t SI__PSI__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SI__PSI__Container
const TTCN_Typedescriptor_t SI__PSI__Container_descr_ = { "@BSSGP_Types.SI_PSI_Container", NULL, &SI__PSI__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SI__PSI__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Target__BSS__to__Source__BSS__Transparent__Container__Contents_sI__PSI__Container_default_coding("RAW");
const XERdescriptor_t       DTM__Handover__Command_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int DTM__Handover__Command_iEI_oer_ext_arr_[0] = {};
const int DTM__Handover__Command_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t DTM__Handover__Command_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DTM__Handover__Command_iEI_oer_ext_arr_, 0, DTM__Handover__Command_iEI_oer_p_};
const TTCN_Typedescriptor_t DTM__Handover__Command_iEI_descr_ = { "@BSSGP_Types.DTM_Handover_Command.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &DTM__Handover__Command_iEI_xer_, &OCTETSTRING_json_, &DTM__Handover__Command_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DTM__Handover__Command_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t DTM__Handover__Command_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       DTM__Handover__Command_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t DTM__Handover__Command_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t DTM__Handover__Command_ext_descr_ = { "@BSSGP_Types.DTM_Handover_Command.ext", &BITSTRING_ber_, &DTM__Handover__Command_ext_raw_, NULL, &DTM__Handover__Command_ext_xer_, &BITSTRING_json_, &DTM__Handover__Command_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DTM__Handover__Command_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t DTM__Handover__Command_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for DTM__Handover__Command_lengthIndicator
const TTCN_Typedescriptor_t DTM__Handover__Command_lengthIndicator_descr_ = { "@BSSGP_Types.DTM_Handover_Command.lengthIndicator", NULL, &DTM__Handover__Command_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DTM__Handover__Command_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       DTM__Handover__Command_dTM__HandoverCommandValue_xer_ = { {"dTM_HandoverCommandValue>\n", "dTM_HandoverCommandValue>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int DTM__Handover__Command_dTM__HandoverCommandValue_oer_ext_arr_[0] = {};
const int DTM__Handover__Command_dTM__HandoverCommandValue_oer_p_[0] = {};
const TTCN_OERdescriptor_t DTM__Handover__Command_dTM__HandoverCommandValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DTM__Handover__Command_dTM__HandoverCommandValue_oer_ext_arr_, 0, DTM__Handover__Command_dTM__HandoverCommandValue_oer_p_};
const TTCN_Typedescriptor_t DTM__Handover__Command_dTM__HandoverCommandValue_descr_ = { "@BSSGP_Types.DTM_Handover_Command.dTM_HandoverCommandValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &DTM__Handover__Command_dTM__HandoverCommandValue_xer_, &OCTETSTRING_json_, &DTM__Handover__Command_dTM__HandoverCommandValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DTM__Handover__Command_dTM__HandoverCommandValue_default_coding("RAW");
const TTCN_RAWdescriptor_t DTM__Handover__Command_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for DTM__Handover__Command
const TTCN_Typedescriptor_t DTM__Handover__Command_descr_ = { "@BSSGP_Types.DTM_Handover_Command", NULL, &DTM__Handover__Command_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING DTM__Handover__Command_default_coding("RAW");
UNIVERSAL_CHARSTRING Target__BSS__to__Source__BSS__Transparent__Container__Contents_dTM__Handover__Command_default_coding("RAW");
UNIVERSAL_CHARSTRING Target__BSS__to__Source__BSS__Transparent__Container__Contents_default_coding("RAW");
UNIVERSAL_CHARSTRING Target__BSS__to__Source__BSS__Transparent__Container_target__BSS__to__Source__BSS__Transparent__Container__Contents_default_coding("RAW");
const TTCN_RAWdescriptor_t Target__BSS__to__Source__BSS__Transparent__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Target__BSS__to__Source__BSS__Transparent__Container
const TTCN_Typedescriptor_t Target__BSS__to__Source__BSS__Transparent__Container_descr_ = { "@BSSGP_Types.Target_BSS_to_Source_BSS_Transparent_Container", NULL, &Target__BSS__to__Source__BSS__Transparent__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Target__BSS__to__Source__BSS__Transparent__Container_default_coding("RAW");
const XERdescriptor_t       NAS__container__for__PS__Handover_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int NAS__container__for__PS__Handover_iEI_oer_ext_arr_[0] = {};
const int NAS__container__for__PS__Handover_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t NAS__container__for__PS__Handover_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, NAS__container__for__PS__Handover_iEI_oer_ext_arr_, 0, NAS__container__for__PS__Handover_iEI_oer_p_};
const TTCN_Typedescriptor_t NAS__container__for__PS__Handover_iEI_descr_ = { "@BSSGP_Types.NAS_container_for_PS_Handover.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &NAS__container__for__PS__Handover_iEI_xer_, &OCTETSTRING_json_, &NAS__container__for__PS__Handover_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NAS__container__for__PS__Handover_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t NAS__container__for__PS__Handover_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       NAS__container__for__PS__Handover_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NAS__container__for__PS__Handover_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NAS__container__for__PS__Handover_ext_descr_ = { "@BSSGP_Types.NAS_container_for_PS_Handover.ext", &BITSTRING_ber_, &NAS__container__for__PS__Handover_ext_raw_, NULL, &NAS__container__for__PS__Handover_ext_xer_, &BITSTRING_json_, &NAS__container__for__PS__Handover_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NAS__container__for__PS__Handover_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t NAS__container__for__PS__Handover_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for NAS__container__for__PS__Handover_lengthIndicator
const TTCN_Typedescriptor_t NAS__container__for__PS__Handover_lengthIndicator_descr_ = { "@BSSGP_Types.NAS_container_for_PS_Handover.lengthIndicator", NULL, &NAS__container__for__PS__Handover_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NAS__container__for__PS__Handover_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       NAS__Container__for__PS__HO_typeOfCipheringAlgorithm_xer_ = { {"typeOfCipheringAlgorithm>\n", "typeOfCipheringAlgorithm>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NAS__Container__for__PS__HO_typeOfCipheringAlgorithm_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NAS__Container__for__PS__HO_typeOfCipheringAlgorithm_descr_ = { "@BSSGP_Types.NAS_Container_for_PS_HO.typeOfCipheringAlgorithm", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &NAS__Container__for__PS__HO_typeOfCipheringAlgorithm_xer_, &BITSTRING_json_, &NAS__Container__for__PS__HO_typeOfCipheringAlgorithm_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NAS__Container__for__PS__HO_typeOfCipheringAlgorithm_default_coding("RAW");
const XERdescriptor_t       NAS__Container__for__PS__HO_spare1_xer_ = { {"spare1>\n", "spare1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NAS__Container__for__PS__HO_spare1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NAS__Container__for__PS__HO_spare1_descr_ = { "@BSSGP_Types.NAS_Container_for_PS_HO.spare1", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &NAS__Container__for__PS__HO_spare1_xer_, &BITSTRING_json_, &NAS__Container__for__PS__HO_spare1_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NAS__Container__for__PS__HO_spare1_default_coding("RAW");
const XERdescriptor_t       NAS__Container__for__PS__HO_oldXID_xer_ = { {"oldXID>\n", "oldXID>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NAS__Container__for__PS__HO_oldXID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NAS__Container__for__PS__HO_oldXID_descr_ = { "@BSSGP_Types.NAS_Container_for_PS_HO.oldXID", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &NAS__Container__for__PS__HO_oldXID_xer_, &BITSTRING_json_, &NAS__Container__for__PS__HO_oldXID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NAS__Container__for__PS__HO_oldXID_default_coding("RAW");
const XERdescriptor_t       NAS__Container__for__PS__HO_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t NAS__Container__for__PS__HO_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t NAS__Container__for__PS__HO_spare2_descr_ = { "@BSSGP_Types.NAS_Container_for_PS_HO.spare2", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &NAS__Container__for__PS__HO_spare2_xer_, &BITSTRING_json_, &NAS__Container__for__PS__HO_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NAS__Container__for__PS__HO_spare2_default_coding("RAW");
const XERdescriptor_t       NAS__Container__for__PS__HO_iOV__UI_xer_ = { {"iOV_UI>\n", "iOV_UI>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int NAS__Container__for__PS__HO_iOV__UI_oer_ext_arr_[0] = {};
const int NAS__Container__for__PS__HO_iOV__UI_oer_p_[0] = {};
const TTCN_OERdescriptor_t NAS__Container__for__PS__HO_iOV__UI_oer_ = { -1, TRUE, 4, FALSE, 0, 0, NAS__Container__for__PS__HO_iOV__UI_oer_ext_arr_, 0, NAS__Container__for__PS__HO_iOV__UI_oer_p_};
const TTCN_Typedescriptor_t NAS__Container__for__PS__HO_iOV__UI_descr_ = { "@BSSGP_Types.NAS_Container_for_PS_HO.iOV_UI", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &NAS__Container__for__PS__HO_iOV__UI_xer_, &OCTETSTRING_json_, &NAS__Container__for__PS__HO_iOV__UI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NAS__Container__for__PS__HO_iOV__UI_default_coding("RAW");
const TTCN_RAWdescriptor_t NAS__Container__for__PS__HO_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for NAS__Container__for__PS__HO
const TTCN_Typedescriptor_t NAS__Container__for__PS__HO_descr_ = { "@BSSGP_Types.NAS_Container_for_PS_HO", NULL, &NAS__Container__for__PS__HO_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NAS__Container__for__PS__HO_default_coding("RAW");
UNIVERSAL_CHARSTRING NAS__container__for__PS__Handover_nAS__Container__for__PS__HO_default_coding("RAW");
const TTCN_RAWdescriptor_t NAS__container__for__PS__Handover_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for NAS__container__for__PS__Handover
const TTCN_Typedescriptor_t NAS__container__for__PS__Handover_descr_ = { "@BSSGP_Types.NAS_container_for_PS_Handover", NULL, &NAS__container__for__PS__Handover_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING NAS__container__for__PS__Handover_default_coding("RAW");
const XERdescriptor_t       PFCs__to__be__set__up__list_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PFCs__to__be__set__up__list_iEI_oer_ext_arr_[0] = {};
const int PFCs__to__be__set__up__list_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t PFCs__to__be__set__up__list_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PFCs__to__be__set__up__list_iEI_oer_ext_arr_, 0, PFCs__to__be__set__up__list_iEI_oer_p_};
const TTCN_Typedescriptor_t PFCs__to__be__set__up__list_iEI_descr_ = { "@BSSGP_Types.PFCs_to_be_set_up_list.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PFCs__to__be__set__up__list_iEI_xer_, &OCTETSTRING_json_, &PFCs__to__be__set__up__list_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFCs__to__be__set__up__list_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t PFCs__to__be__set__up__list_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PFCs__to__be__set__up__list_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PFCs__to__be__set__up__list_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PFCs__to__be__set__up__list_ext_descr_ = { "@BSSGP_Types.PFCs_to_be_set_up_list.ext", &BITSTRING_ber_, &PFCs__to__be__set__up__list_ext_raw_, NULL, &PFCs__to__be__set__up__list_ext_xer_, &BITSTRING_json_, &PFCs__to__be__set__up__list_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFCs__to__be__set__up__list_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t PFCs__to__be__set__up__list_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PFCs__to__be__set__up__list_lengthIndicator
const TTCN_Typedescriptor_t PFCs__to__be__set__up__list_lengthIndicator_descr_ = { "@BSSGP_Types.PFCs_to_be_set_up_list.lengthIndicator", NULL, &PFCs__to__be__set__up__list_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFCs__to__be__set__up__list_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t PFCs__to__be__set__up__list_number__of__PFCs_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PFCs__to__be__set__up__list_number__of__PFCs_xer_ = { {"number_of_PFCs>\n", "number_of_PFCs>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t PFCs__to__be__set__up__list_number__of__PFCs_descr_ = { "@BSSGP_Types.PFCs_to_be_set_up_list.number_of_PFCs", &INTEGER_ber_, &PFCs__to__be__set__up__list_number__of__PFCs_raw_, &INTEGER_text_, &PFCs__to__be__set__up__list_number__of__PFCs_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFCs__to__be__set__up__list_number__of__PFCs_default_coding("RAW");
const TTCN_RAWdescriptor_t Multiple__PFCs__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Multiple__PFCs__BSSGP
const TTCN_Typedescriptor_t Multiple__PFCs__BSSGP_descr_ = { "@BSSGP_Types.Multiple_PFCs_BSSGP", NULL, &Multiple__PFCs__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, &Single__PFC__BSSGP_descr_, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Single__PFC__BSSGP_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING Single__PFC__BSSGP_pFT_default_coding("RAW");
UNIVERSAL_CHARSTRING Single__PFC__BSSGP_aBQP_default_coding("RAW");
const TTCN_RAWdescriptor_t Single__PFC__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Single__PFC__BSSGP
const TTCN_Typedescriptor_t Single__PFC__BSSGP_descr_ = { "@BSSGP_Types.Single_PFC_BSSGP", NULL, &Single__PFC__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Single__PFC__BSSGP_allocation__Retention__Priority_default_coding("RAW");
UNIVERSAL_CHARSTRING Single__PFC__BSSGP_t10_default_coding("RAW");
UNIVERSAL_CHARSTRING Single__PFC__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Multiple__PFCs__BSSGP_0_default_coding("RAW");
UNIVERSAL_CHARSTRING Multiple__PFCs__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING PFCs__to__be__set__up__list_pFCs_default_coding("RAW");
const TTCN_RAWdescriptor_t PFCs__to__be__set__up__list_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PFCs__to__be__set__up__list
const TTCN_Typedescriptor_t PFCs__to__be__set__up__list_descr_ = { "@BSSGP_Types.PFCs_to_be_set_up_list", NULL, &PFCs__to__be__set__up__list_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PFCs__to__be__set__up__list_default_coding("RAW");
const XERdescriptor_t       List__of__set__up__PFCs__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int List__of__set__up__PFCs__BSSGP_iEI_oer_ext_arr_[0] = {};
const int List__of__set__up__PFCs__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t List__of__set__up__PFCs__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, List__of__set__up__PFCs__BSSGP_iEI_oer_ext_arr_, 0, List__of__set__up__PFCs__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t List__of__set__up__PFCs__BSSGP_iEI_descr_ = { "@BSSGP_Types.List_of_set_up_PFCs_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &List__of__set__up__PFCs__BSSGP_iEI_xer_, &OCTETSTRING_json_, &List__of__set__up__PFCs__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING List__of__set__up__PFCs__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t List__of__set__up__PFCs__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       List__of__set__up__PFCs__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t List__of__set__up__PFCs__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t List__of__set__up__PFCs__BSSGP_ext_descr_ = { "@BSSGP_Types.List_of_set_up_PFCs_BSSGP.ext", &BITSTRING_ber_, &List__of__set__up__PFCs__BSSGP_ext_raw_, NULL, &List__of__set__up__PFCs__BSSGP_ext_xer_, &BITSTRING_json_, &List__of__set__up__PFCs__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING List__of__set__up__PFCs__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t List__of__set__up__PFCs__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for List__of__set__up__PFCs__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t List__of__set__up__PFCs__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.List_of_set_up_PFCs_BSSGP.lengthIndicator", NULL, &List__of__set__up__PFCs__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING List__of__set__up__PFCs__BSSGP_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t List__of__set__up__PFCs__BSSGP_number__of__PFCs_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       List__of__set__up__PFCs__BSSGP_number__of__PFCs_xer_ = { {"number_of_PFCs>\n", "number_of_PFCs>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t List__of__set__up__PFCs__BSSGP_number__of__PFCs_descr_ = { "@BSSGP_Types.List_of_set_up_PFCs_BSSGP.number_of_PFCs", &INTEGER_ber_, &List__of__set__up__PFCs__BSSGP_number__of__PFCs_raw_, &INTEGER_text_, &List__of__set__up__PFCs__BSSGP_number__of__PFCs_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING List__of__set__up__PFCs__BSSGP_number__of__PFCs_default_coding("RAW");
const TTCN_RAWdescriptor_t Multiple__PFIs__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Multiple__PFIs__BSSGP
const TTCN_Typedescriptor_t Multiple__PFIs__BSSGP_descr_ = { "@BSSGP_Types.Multiple_PFIs_BSSGP", NULL, &Multiple__PFIs__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, &Single__PFI__BSSGP_descr_, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       Single__PFI__BSSGP_pFI__Value_xer_ = { {"pFI_Value>\n", "pFI_Value>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Single__PFI__BSSGP_pFI__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Single__PFI__BSSGP_pFI__Value_descr_ = { "@BSSGP_Types.Single_PFI_BSSGP.pFI_Value", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &Single__PFI__BSSGP_pFI__Value_xer_, &BITSTRING_json_, &Single__PFI__BSSGP_pFI__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Single__PFI__BSSGP_pFI__Value_default_coding("RAW");
const XERdescriptor_t       Single__PFI__BSSGP_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Single__PFI__BSSGP_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Single__PFI__BSSGP_spare_descr_ = { "@BSSGP_Types.Single_PFI_BSSGP.spare", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Single__PFI__BSSGP_spare_xer_, &BITSTRING_json_, &Single__PFI__BSSGP_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Single__PFI__BSSGP_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Single__PFI__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Single__PFI__BSSGP
const TTCN_Typedescriptor_t Single__PFI__BSSGP_descr_ = { "@BSSGP_Types.Single_PFI_BSSGP", NULL, &Single__PFI__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Single__PFI__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Multiple__PFIs__BSSGP_0_default_coding("RAW");
UNIVERSAL_CHARSTRING Multiple__PFIs__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING List__of__set__up__PFCs__BSSGP_pFIs_default_coding("RAW");
const TTCN_RAWdescriptor_t List__of__set__up__PFCs__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for List__of__set__up__PFCs__BSSGP
const TTCN_Typedescriptor_t List__of__set__up__PFCs__BSSGP_descr_ = { "@BSSGP_Types.List_of_set_up_PFCs_BSSGP", NULL, &List__of__set__up__PFCs__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING List__of__set__up__PFCs__BSSGP_default_coding("RAW");
const XERdescriptor_t       Extended__Feature__Bitmap_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Extended__Feature__Bitmap_iEI_oer_ext_arr_[0] = {};
const int Extended__Feature__Bitmap_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Extended__Feature__Bitmap_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Extended__Feature__Bitmap_iEI_oer_ext_arr_, 0, Extended__Feature__Bitmap_iEI_oer_p_};
const TTCN_Typedescriptor_t Extended__Feature__Bitmap_iEI_descr_ = { "@BSSGP_Types.Extended_Feature_Bitmap.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Extended__Feature__Bitmap_iEI_xer_, &OCTETSTRING_json_, &Extended__Feature__Bitmap_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Extended__Feature__Bitmap_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Extended__Feature__Bitmap_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Extended__Feature__Bitmap_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Extended__Feature__Bitmap_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Extended__Feature__Bitmap_ext_descr_ = { "@BSSGP_Types.Extended_Feature_Bitmap.ext", &BITSTRING_ber_, &Extended__Feature__Bitmap_ext_raw_, NULL, &Extended__Feature__Bitmap_ext_xer_, &BITSTRING_json_, &Extended__Feature__Bitmap_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Extended__Feature__Bitmap_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Extended__Feature__Bitmap_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Extended__Feature__Bitmap_lengthIndicator
const TTCN_Typedescriptor_t Extended__Feature__Bitmap_lengthIndicator_descr_ = { "@BSSGP_Types.Extended_Feature_Bitmap.lengthIndicator", NULL, &Extended__Feature__Bitmap_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Extended__Feature__Bitmap_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Extended__Feature__Bitmap_pS__Handover_xer_ = { {"pS_Handover>\n", "pS_Handover>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Extended__Feature__Bitmap_pS__Handover_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Extended__Feature__Bitmap_pS__Handover_descr_ = { "@BSSGP_Types.Extended_Feature_Bitmap.pS_Handover", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Extended__Feature__Bitmap_pS__Handover_xer_, &BITSTRING_json_, &Extended__Feature__Bitmap_pS__Handover_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Extended__Feature__Bitmap_pS__Handover_default_coding("RAW");
const XERdescriptor_t       Extended__Feature__Bitmap_gigabitInterface_xer_ = { {"gigabitInterface>\n", "gigabitInterface>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Extended__Feature__Bitmap_gigabitInterface_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Extended__Feature__Bitmap_gigabitInterface_descr_ = { "@BSSGP_Types.Extended_Feature_Bitmap.gigabitInterface", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Extended__Feature__Bitmap_gigabitInterface_xer_, &BITSTRING_json_, &Extended__Feature__Bitmap_gigabitInterface_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Extended__Feature__Bitmap_gigabitInterface_default_coding("RAW");
const XERdescriptor_t       Extended__Feature__Bitmap_mOCN_xer_ = { {"mOCN>\n", "mOCN>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Extended__Feature__Bitmap_mOCN_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Extended__Feature__Bitmap_mOCN_descr_ = { "@BSSGP_Types.Extended_Feature_Bitmap.mOCN", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Extended__Feature__Bitmap_mOCN_xer_, &BITSTRING_json_, &Extended__Feature__Bitmap_mOCN_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Extended__Feature__Bitmap_mOCN_default_coding("RAW");
const XERdescriptor_t       Extended__Feature__Bitmap_cS__PS__Coordination__Enhancements_xer_ = { {"cS_PS_Coordination_Enhancements>\n", "cS_PS_Coordination_Enhancements>\n"}, {33, 33}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Extended__Feature__Bitmap_cS__PS__Coordination__Enhancements_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Extended__Feature__Bitmap_cS__PS__Coordination__Enhancements_descr_ = { "@BSSGP_Types.Extended_Feature_Bitmap.cS_PS_Coordination_Enhancements", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Extended__Feature__Bitmap_cS__PS__Coordination__Enhancements_xer_, &BITSTRING_json_, &Extended__Feature__Bitmap_cS__PS__Coordination__Enhancements_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Extended__Feature__Bitmap_cS__PS__Coordination__Enhancements_default_coding("RAW");
const XERdescriptor_t       Extended__Feature__Bitmap_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Extended__Feature__Bitmap_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Extended__Feature__Bitmap_spare_descr_ = { "@BSSGP_Types.Extended_Feature_Bitmap.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &Extended__Feature__Bitmap_spare_xer_, &BITSTRING_json_, &Extended__Feature__Bitmap_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Extended__Feature__Bitmap_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Extended__Feature__Bitmap_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Extended__Feature__Bitmap
const TTCN_Typedescriptor_t Extended__Feature__Bitmap_descr_ = { "@BSSGP_Types.Extended_Feature_Bitmap", NULL, &Extended__Feature__Bitmap_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Extended__Feature__Bitmap_default_coding("RAW");
const XERdescriptor_t       Source__to__Target__Transparent__Container_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Source__to__Target__Transparent__Container_iEI_oer_ext_arr_[0] = {};
const int Source__to__Target__Transparent__Container_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Source__to__Target__Transparent__Container_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Source__to__Target__Transparent__Container_iEI_oer_ext_arr_, 0, Source__to__Target__Transparent__Container_iEI_oer_p_};
const TTCN_Typedescriptor_t Source__to__Target__Transparent__Container_iEI_descr_ = { "@BSSGP_Types.Source_to_Target_Transparent_Container.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Source__to__Target__Transparent__Container_iEI_xer_, &OCTETSTRING_json_, &Source__to__Target__Transparent__Container_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__to__Target__Transparent__Container_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Source__to__Target__Transparent__Container_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Source__to__Target__Transparent__Container_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Source__to__Target__Transparent__Container_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Source__to__Target__Transparent__Container_ext_descr_ = { "@BSSGP_Types.Source_to_Target_Transparent_Container.ext", &BITSTRING_ber_, &Source__to__Target__Transparent__Container_ext_raw_, NULL, &Source__to__Target__Transparent__Container_ext_xer_, &BITSTRING_json_, &Source__to__Target__Transparent__Container_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__to__Target__Transparent__Container_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Source__to__Target__Transparent__Container_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Source__to__Target__Transparent__Container_lengthIndicator
const TTCN_Typedescriptor_t Source__to__Target__Transparent__Container_lengthIndicator_descr_ = { "@BSSGP_Types.Source_to_Target_Transparent_Container.lengthIndicator", NULL, &Source__to__Target__Transparent__Container_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__to__Target__Transparent__Container_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Source__to__Target__Transparent__Container_source__to__Target__Transparent__Container__Contents_xer_ = { {"source_to_Target_Transparent_Container_Contents>\n", "source_to_Target_Transparent_Container_Contents>\n"}, {49, 49}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Source__to__Target__Transparent__Container_source__to__Target__Transparent__Container__Contents_oer_ext_arr_[0] = {};
const int Source__to__Target__Transparent__Container_source__to__Target__Transparent__Container__Contents_oer_p_[0] = {};
const TTCN_OERdescriptor_t Source__to__Target__Transparent__Container_source__to__Target__Transparent__Container__Contents_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Source__to__Target__Transparent__Container_source__to__Target__Transparent__Container__Contents_oer_ext_arr_, 0, Source__to__Target__Transparent__Container_source__to__Target__Transparent__Container__Contents_oer_p_};
const TTCN_Typedescriptor_t Source__to__Target__Transparent__Container_source__to__Target__Transparent__Container__Contents_descr_ = { "@BSSGP_Types.Source_to_Target_Transparent_Container.source_to_Target_Transparent_Container_Contents", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &Source__to__Target__Transparent__Container_source__to__Target__Transparent__Container__Contents_xer_, &OCTETSTRING_json_, &Source__to__Target__Transparent__Container_source__to__Target__Transparent__Container__Contents_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__to__Target__Transparent__Container_source__to__Target__Transparent__Container__Contents_default_coding("RAW");
const TTCN_RAWdescriptor_t Source__to__Target__Transparent__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Source__to__Target__Transparent__Container
const TTCN_Typedescriptor_t Source__to__Target__Transparent__Container_descr_ = { "@BSSGP_Types.Source_to_Target_Transparent_Container", NULL, &Source__to__Target__Transparent__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Source__to__Target__Transparent__Container_default_coding("RAW");
const XERdescriptor_t       Target__to__Source__Transparent__Container_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Target__to__Source__Transparent__Container_iEI_oer_ext_arr_[0] = {};
const int Target__to__Source__Transparent__Container_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Target__to__Source__Transparent__Container_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Target__to__Source__Transparent__Container_iEI_oer_ext_arr_, 0, Target__to__Source__Transparent__Container_iEI_oer_p_};
const TTCN_Typedescriptor_t Target__to__Source__Transparent__Container_iEI_descr_ = { "@BSSGP_Types.Target_to_Source_Transparent_Container.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Target__to__Source__Transparent__Container_iEI_xer_, &OCTETSTRING_json_, &Target__to__Source__Transparent__Container_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Target__to__Source__Transparent__Container_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Target__to__Source__Transparent__Container_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Target__to__Source__Transparent__Container_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Target__to__Source__Transparent__Container_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Target__to__Source__Transparent__Container_ext_descr_ = { "@BSSGP_Types.Target_to_Source_Transparent_Container.ext", &BITSTRING_ber_, &Target__to__Source__Transparent__Container_ext_raw_, NULL, &Target__to__Source__Transparent__Container_ext_xer_, &BITSTRING_json_, &Target__to__Source__Transparent__Container_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Target__to__Source__Transparent__Container_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Target__to__Source__Transparent__Container_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Target__to__Source__Transparent__Container_lengthIndicator
const TTCN_Typedescriptor_t Target__to__Source__Transparent__Container_lengthIndicator_descr_ = { "@BSSGP_Types.Target_to_Source_Transparent_Container.lengthIndicator", NULL, &Target__to__Source__Transparent__Container_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Target__to__Source__Transparent__Container_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Target__to__Source__Transparent__Container_handover__to__UTRAN__or__Radio__Bearer__Reconfiguration__radio__interface__message_xer_ = { {"handover_to_UTRAN_or_Radio_Bearer_Reconfiguration_radio_interface_message>\n", "handover_to_UTRAN_or_Radio_Bearer_Reconfiguration_radio_interface_message>\n"}, {75, 75}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Target__to__Source__Transparent__Container_handover__to__UTRAN__or__Radio__Bearer__Reconfiguration__radio__interface__message_oer_ext_arr_[0] = {};
const int Target__to__Source__Transparent__Container_handover__to__UTRAN__or__Radio__Bearer__Reconfiguration__radio__interface__message_oer_p_[0] = {};
const TTCN_OERdescriptor_t Target__to__Source__Transparent__Container_handover__to__UTRAN__or__Radio__Bearer__Reconfiguration__radio__interface__message_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Target__to__Source__Transparent__Container_handover__to__UTRAN__or__Radio__Bearer__Reconfiguration__radio__interface__message_oer_ext_arr_, 0, Target__to__Source__Transparent__Container_handover__to__UTRAN__or__Radio__Bearer__Reconfiguration__radio__interface__message_oer_p_};
const TTCN_Typedescriptor_t Target__to__Source__Transparent__Container_handover__to__UTRAN__or__Radio__Bearer__Reconfiguration__radio__interface__message_descr_ = { "@BSSGP_Types.Target_to_Source_Transparent_Container.handover_to_UTRAN_or_Radio_Bearer_Reconfiguration_radio_interface_message", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &Target__to__Source__Transparent__Container_handover__to__UTRAN__or__Radio__Bearer__Reconfiguration__radio__interface__message_xer_, &OCTETSTRING_json_, &Target__to__Source__Transparent__Container_handover__to__UTRAN__or__Radio__Bearer__Reconfiguration__radio__interface__message_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Target__to__Source__Transparent__Container_handover__to__UTRAN__or__Radio__Bearer__Reconfiguration__radio__interface__message_default_coding("RAW");
const TTCN_RAWdescriptor_t Target__to__Source__Transparent__Container_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Target__to__Source__Transparent__Container
const TTCN_Typedescriptor_t Target__to__Source__Transparent__Container_descr_ = { "@BSSGP_Types.Target_to_Source_Transparent_Container", NULL, &Target__to__Source__Transparent__Container_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Target__to__Source__Transparent__Container_default_coding("RAW");
const XERdescriptor_t       RNC__Identifier__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RNC__Identifier__BSSGP_iEI_oer_ext_arr_[0] = {};
const int RNC__Identifier__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t RNC__Identifier__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RNC__Identifier__BSSGP_iEI_oer_ext_arr_, 0, RNC__Identifier__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_iEI_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RNC__Identifier__BSSGP_iEI_xer_, &OCTETSTRING_json_, &RNC__Identifier__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t RNC__Identifier__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       RNC__Identifier__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t RNC__Identifier__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_ext_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.ext", &BITSTRING_ber_, &RNC__Identifier__BSSGP_ext_raw_, NULL, &RNC__Identifier__BSSGP_ext_xer_, &BITSTRING_json_, &RNC__Identifier__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t RNC__Identifier__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RNC__Identifier__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.lengthIndicator", NULL, &RNC__Identifier__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       RNC__Identifier__BSSGP_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_mccDigit1_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &RNC__Identifier__BSSGP_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_mccDigit1_default_coding("RAW");
const XERdescriptor_t       RNC__Identifier__BSSGP_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_mccDigit2_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &RNC__Identifier__BSSGP_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_mccDigit2_default_coding("RAW");
const XERdescriptor_t       RNC__Identifier__BSSGP_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_mccDigit3_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &RNC__Identifier__BSSGP_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_mccDigit3_default_coding("RAW");
const XERdescriptor_t       RNC__Identifier__BSSGP_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_mncDigit3_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &RNC__Identifier__BSSGP_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_mncDigit3_default_coding("RAW");
const XERdescriptor_t       RNC__Identifier__BSSGP_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_mncDigit1_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &RNC__Identifier__BSSGP_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_mncDigit1_default_coding("RAW");
const XERdescriptor_t       RNC__Identifier__BSSGP_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_mncDigit2_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &RNC__Identifier__BSSGP_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_mncDigit2_default_coding("RAW");
const XERdescriptor_t       RNC__Identifier__BSSGP_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RNC__Identifier__BSSGP_lac_oer_ext_arr_[0] = {};
const int RNC__Identifier__BSSGP_lac_oer_p_[0] = {};
const TTCN_OERdescriptor_t RNC__Identifier__BSSGP_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RNC__Identifier__BSSGP_lac_oer_ext_arr_, 0, RNC__Identifier__BSSGP_lac_oer_p_};
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_lac_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RNC__Identifier__BSSGP_lac_xer_, &OCTETSTRING_json_, &RNC__Identifier__BSSGP_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_lac_default_coding("RAW");
const XERdescriptor_t       RNC__Identifier__BSSGP_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RNC__Identifier__BSSGP_rac_oer_ext_arr_[0] = {};
const int RNC__Identifier__BSSGP_rac_oer_p_[0] = {};
const TTCN_OERdescriptor_t RNC__Identifier__BSSGP_rac_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RNC__Identifier__BSSGP_rac_oer_ext_arr_, 0, RNC__Identifier__BSSGP_rac_oer_p_};
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_rac_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.rac", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RNC__Identifier__BSSGP_rac_xer_, &OCTETSTRING_json_, &RNC__Identifier__BSSGP_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_rac_default_coding("RAW");
const XERdescriptor_t       RNC__Identifier__BSSGP_rNC__ID_xer_ = { {"rNC_ID>\n", "rNC_ID>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int RNC__Identifier__BSSGP_rNC__ID_oer_ext_arr_[0] = {};
const int RNC__Identifier__BSSGP_rNC__ID_oer_p_[0] = {};
const TTCN_OERdescriptor_t RNC__Identifier__BSSGP_rNC__ID_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RNC__Identifier__BSSGP_rNC__ID_oer_ext_arr_, 0, RNC__Identifier__BSSGP_rNC__ID_oer_p_};
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_rNC__ID_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP.rNC_ID", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RNC__Identifier__BSSGP_rNC__ID_xer_, &OCTETSTRING_json_, &RNC__Identifier__BSSGP_rNC__ID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_rNC__ID_default_coding("RAW");
const TTCN_RAWdescriptor_t RNC__Identifier__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RNC__Identifier__BSSGP
const TTCN_Typedescriptor_t RNC__Identifier__BSSGP_descr_ = { "@BSSGP_Types.RNC_Identifier_BSSGP", NULL, &RNC__Identifier__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Identifier__BSSGP_default_coding("RAW");
const XERdescriptor_t       IMEI__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int IMEI__BSSGP_iEI_oer_ext_arr_[0] = {};
const int IMEI__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t IMEI__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IMEI__BSSGP_iEI_oer_ext_arr_, 0, IMEI__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t IMEI__BSSGP_iEI_descr_ = { "@BSSGP_Types.IMEI_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &IMEI__BSSGP_iEI_xer_, &OCTETSTRING_json_, &IMEI__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t IMEI__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IMEI__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMEI__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMEI__BSSGP_ext_descr_ = { "@BSSGP_Types.IMEI_BSSGP.ext", &BITSTRING_ber_, &IMEI__BSSGP_ext_raw_, NULL, &IMEI__BSSGP_ext_xer_, &BITSTRING_json_, &IMEI__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t IMEI__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IMEI__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t IMEI__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.IMEI_BSSGP.lengthIndicator", NULL, &IMEI__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__BSSGP_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       IMEI__Value_typeOfIdentity_xer_ = { {"typeOfIdentity>\n", "typeOfIdentity>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMEI__Value_typeOfIdentity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMEI__Value_typeOfIdentity_descr_ = { "@BSSGP_Types.IMEI_Value.typeOfIdentity", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &IMEI__Value_typeOfIdentity_xer_, &BITSTRING_json_, &IMEI__Value_typeOfIdentity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__Value_typeOfIdentity_default_coding("RAW");
const XERdescriptor_t       IMEI__Value_oddevenIndicator_xer_ = { {"oddevenIndicator>\n", "oddevenIndicator>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t IMEI__Value_oddevenIndicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t IMEI__Value_oddevenIndicator_descr_ = { "@BSSGP_Types.IMEI_Value.oddevenIndicator", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &IMEI__Value_oddevenIndicator_xer_, &BITSTRING_json_, &IMEI__Value_oddevenIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__Value_oddevenIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t IMEI__Value_digits_raw_ = {60,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       IMEI__Value_digits_xer_ = { {"digits>\n", "digits>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t IMEI__Value_digits_descr_ = { "@BSSGP_Types.IMEI_Value.digits", NULL, &IMEI__Value_digits_raw_, NULL, &IMEI__Value_digits_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__Value_digits_default_coding("RAW");
const TTCN_RAWdescriptor_t IMEI__Value_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IMEI__Value
const TTCN_Typedescriptor_t IMEI__Value_descr_ = { "@BSSGP_Types.IMEI_Value", NULL, &IMEI__Value_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__Value_default_coding("RAW");
UNIVERSAL_CHARSTRING IMEI__BSSGP_iMEI_default_coding("RAW");
const TTCN_RAWdescriptor_t IMEI__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for IMEI__BSSGP
const TTCN_Typedescriptor_t IMEI__BSSGP_descr_ = { "@BSSGP_Types.IMEI_BSSGP", NULL, &IMEI__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING IMEI__BSSGP_default_coding("RAW");
const XERdescriptor_t       Time__To__MBMS__Data__Transfer_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Time__To__MBMS__Data__Transfer_iEI_oer_ext_arr_[0] = {};
const int Time__To__MBMS__Data__Transfer_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Time__To__MBMS__Data__Transfer_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Time__To__MBMS__Data__Transfer_iEI_oer_ext_arr_, 0, Time__To__MBMS__Data__Transfer_iEI_oer_p_};
const TTCN_Typedescriptor_t Time__To__MBMS__Data__Transfer_iEI_descr_ = { "@BSSGP_Types.Time_To_MBMS_Data_Transfer.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Time__To__MBMS__Data__Transfer_iEI_xer_, &OCTETSTRING_json_, &Time__To__MBMS__Data__Transfer_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__To__MBMS__Data__Transfer_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Time__To__MBMS__Data__Transfer_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Time__To__MBMS__Data__Transfer_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Time__To__MBMS__Data__Transfer_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Time__To__MBMS__Data__Transfer_ext_descr_ = { "@BSSGP_Types.Time_To_MBMS_Data_Transfer.ext", &BITSTRING_ber_, &Time__To__MBMS__Data__Transfer_ext_raw_, NULL, &Time__To__MBMS__Data__Transfer_ext_xer_, &BITSTRING_json_, &Time__To__MBMS__Data__Transfer_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__To__MBMS__Data__Transfer_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Time__To__MBMS__Data__Transfer_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Time__To__MBMS__Data__Transfer_lengthIndicator
const TTCN_Typedescriptor_t Time__To__MBMS__Data__Transfer_lengthIndicator_descr_ = { "@BSSGP_Types.Time_To_MBMS_Data_Transfer.lengthIndicator", NULL, &Time__To__MBMS__Data__Transfer_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__To__MBMS__Data__Transfer_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Time__To__MBMS__Data__Transfer_valuePart_xer_ = { {"valuePart>\n", "valuePart>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Time__To__MBMS__Data__Transfer_valuePart_oer_ext_arr_[0] = {};
const int Time__To__MBMS__Data__Transfer_valuePart_oer_p_[0] = {};
const TTCN_OERdescriptor_t Time__To__MBMS__Data__Transfer_valuePart_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Time__To__MBMS__Data__Transfer_valuePart_oer_ext_arr_, 0, Time__To__MBMS__Data__Transfer_valuePart_oer_p_};
const TTCN_Typedescriptor_t Time__To__MBMS__Data__Transfer_valuePart_descr_ = { "@BSSGP_Types.Time_To_MBMS_Data_Transfer.valuePart", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Time__To__MBMS__Data__Transfer_valuePart_xer_, &OCTETSTRING_json_, &Time__To__MBMS__Data__Transfer_valuePart_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__To__MBMS__Data__Transfer_valuePart_default_coding("RAW");
const TTCN_RAWdescriptor_t Time__To__MBMS__Data__Transfer_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Time__To__MBMS__Data__Transfer
const TTCN_Typedescriptor_t Time__To__MBMS__Data__Transfer_descr_ = { "@BSSGP_Types.Time_To_MBMS_Data_Transfer", NULL, &Time__To__MBMS__Data__Transfer_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__To__MBMS__Data__Transfer_default_coding("RAW");
const XERdescriptor_t       MBMS__Session__Repetition__Number_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Session__Repetition__Number_iEI_oer_ext_arr_[0] = {};
const int MBMS__Session__Repetition__Number_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Session__Repetition__Number_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMS__Session__Repetition__Number_iEI_oer_ext_arr_, 0, MBMS__Session__Repetition__Number_iEI_oer_p_};
const TTCN_Typedescriptor_t MBMS__Session__Repetition__Number_iEI_descr_ = { "@BSSGP_Types.MBMS_Session_Repetition_Number.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MBMS__Session__Repetition__Number_iEI_xer_, &OCTETSTRING_json_, &MBMS__Session__Repetition__Number_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Repetition__Number_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Repetition__Number_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MBMS__Session__Repetition__Number_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MBMS__Session__Repetition__Number_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MBMS__Session__Repetition__Number_ext_descr_ = { "@BSSGP_Types.MBMS_Session_Repetition_Number.ext", &BITSTRING_ber_, &MBMS__Session__Repetition__Number_ext_raw_, NULL, &MBMS__Session__Repetition__Number_ext_xer_, &BITSTRING_json_, &MBMS__Session__Repetition__Number_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Repetition__Number_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Repetition__Number_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Session__Repetition__Number_lengthIndicator
const TTCN_Typedescriptor_t MBMS__Session__Repetition__Number_lengthIndicator_descr_ = { "@BSSGP_Types.MBMS_Session_Repetition_Number.lengthIndicator", NULL, &MBMS__Session__Repetition__Number_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Repetition__Number_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MBMS__Session__Repetition__Number_repetitionNumber_xer_ = { {"repetitionNumber>\n", "repetitionNumber>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MBMS__Session__Repetition__Number_repetitionNumber_oer_ext_arr_[0] = {};
const int MBMS__Session__Repetition__Number_repetitionNumber_oer_p_[0] = {};
const TTCN_OERdescriptor_t MBMS__Session__Repetition__Number_repetitionNumber_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMS__Session__Repetition__Number_repetitionNumber_oer_ext_arr_, 0, MBMS__Session__Repetition__Number_repetitionNumber_oer_p_};
const TTCN_Typedescriptor_t MBMS__Session__Repetition__Number_repetitionNumber_descr_ = { "@BSSGP_Types.MBMS_Session_Repetition_Number.repetitionNumber", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &MBMS__Session__Repetition__Number_repetitionNumber_xer_, &OCTETSTRING_json_, &MBMS__Session__Repetition__Number_repetitionNumber_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Repetition__Number_repetitionNumber_default_coding("RAW");
const TTCN_RAWdescriptor_t MBMS__Session__Repetition__Number_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MBMS__Session__Repetition__Number
const TTCN_Typedescriptor_t MBMS__Session__Repetition__Number_descr_ = { "@BSSGP_Types.MBMS_Session_Repetition_Number", NULL, &MBMS__Session__Repetition__Number_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MBMS__Session__Repetition__Number_default_coding("RAW");
const XERdescriptor_t       Active__PFCs__List__BSSGP_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Active__PFCs__List__BSSGP_iEI_oer_ext_arr_[0] = {};
const int Active__PFCs__List__BSSGP_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Active__PFCs__List__BSSGP_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Active__PFCs__List__BSSGP_iEI_oer_ext_arr_, 0, Active__PFCs__List__BSSGP_iEI_oer_p_};
const TTCN_Typedescriptor_t Active__PFCs__List__BSSGP_iEI_descr_ = { "@BSSGP_Types.Active_PFCs_List_BSSGP.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Active__PFCs__List__BSSGP_iEI_xer_, &OCTETSTRING_json_, &Active__PFCs__List__BSSGP_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Active__PFCs__List__BSSGP_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Active__PFCs__List__BSSGP_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Active__PFCs__List__BSSGP_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Active__PFCs__List__BSSGP_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Active__PFCs__List__BSSGP_ext_descr_ = { "@BSSGP_Types.Active_PFCs_List_BSSGP.ext", &BITSTRING_ber_, &Active__PFCs__List__BSSGP_ext_raw_, NULL, &Active__PFCs__List__BSSGP_ext_xer_, &BITSTRING_json_, &Active__PFCs__List__BSSGP_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Active__PFCs__List__BSSGP_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Active__PFCs__List__BSSGP_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Active__PFCs__List__BSSGP_lengthIndicator
const TTCN_Typedescriptor_t Active__PFCs__List__BSSGP_lengthIndicator_descr_ = { "@BSSGP_Types.Active_PFCs_List_BSSGP.lengthIndicator", NULL, &Active__PFCs__List__BSSGP_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Active__PFCs__List__BSSGP_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t Active__PFCs__List__BSSGP_number__of__PFCs_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Active__PFCs__List__BSSGP_number__of__PFCs_xer_ = { {"number_of_PFCs>\n", "number_of_PFCs>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Active__PFCs__List__BSSGP_number__of__PFCs_descr_ = { "@BSSGP_Types.Active_PFCs_List_BSSGP.number_of_PFCs", &INTEGER_ber_, &Active__PFCs__List__BSSGP_number__of__PFCs_raw_, &INTEGER_text_, &Active__PFCs__List__BSSGP_number__of__PFCs_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Active__PFCs__List__BSSGP_number__of__PFCs_default_coding("RAW");
UNIVERSAL_CHARSTRING Active__PFCs__List__BSSGP_pFIs_default_coding("RAW");
const TTCN_RAWdescriptor_t Active__PFCs__List__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Active__PFCs__List__BSSGP
const TTCN_Typedescriptor_t Active__PFCs__List__BSSGP_descr_ = { "@BSSGP_Types.Active_PFCs_List_BSSGP", NULL, &Active__PFCs__List__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Active__PFCs__List__BSSGP_default_coding("RAW");
const XERdescriptor_t       VelocityData_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int VelocityData_iEI_oer_ext_arr_[0] = {};
const int VelocityData_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t VelocityData_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VelocityData_iEI_oer_ext_arr_, 0, VelocityData_iEI_oer_p_};
const TTCN_Typedescriptor_t VelocityData_iEI_descr_ = { "@BSSGP_Types.VelocityData.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &VelocityData_iEI_xer_, &OCTETSTRING_json_, &VelocityData_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING VelocityData_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t VelocityData_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       VelocityData_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t VelocityData_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t VelocityData_ext_descr_ = { "@BSSGP_Types.VelocityData.ext", &BITSTRING_ber_, &VelocityData_ext_raw_, NULL, &VelocityData_ext_xer_, &BITSTRING_json_, &VelocityData_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING VelocityData_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t VelocityData_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for VelocityData_lengthIndicator
const TTCN_Typedescriptor_t VelocityData_lengthIndicator_descr_ = { "@BSSGP_Types.VelocityData.lengthIndicator", NULL, &VelocityData_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING VelocityData_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       VelocityData_velocityDataValue_xer_ = { {"velocityDataValue>\n", "velocityDataValue>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int VelocityData_velocityDataValue_oer_ext_arr_[0] = {};
const int VelocityData_velocityDataValue_oer_p_[0] = {};
const TTCN_OERdescriptor_t VelocityData_velocityDataValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VelocityData_velocityDataValue_oer_ext_arr_, 0, VelocityData_velocityDataValue_oer_p_};
const TTCN_Typedescriptor_t VelocityData_velocityDataValue_descr_ = { "@BSSGP_Types.VelocityData.velocityDataValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VelocityData_velocityDataValue_xer_, &OCTETSTRING_json_, &VelocityData_velocityDataValue_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING VelocityData_velocityDataValue_default_coding("RAW");
const TTCN_RAWdescriptor_t VelocityData_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for VelocityData
const TTCN_Typedescriptor_t VelocityData_descr_ = { "@BSSGP_Types.VelocityData", NULL, &VelocityData_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING VelocityData_default_coding("RAW");
const XERdescriptor_t       Requested__GANSS__Assistance__Data_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Requested__GANSS__Assistance__Data_iEI_oer_ext_arr_[0] = {};
const int Requested__GANSS__Assistance__Data_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Requested__GANSS__Assistance__Data_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Requested__GANSS__Assistance__Data_iEI_oer_ext_arr_, 0, Requested__GANSS__Assistance__Data_iEI_oer_p_};
const TTCN_Typedescriptor_t Requested__GANSS__Assistance__Data_iEI_descr_ = { "@BSSGP_Types.Requested_GANSS_Assistance_Data.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Requested__GANSS__Assistance__Data_iEI_xer_, &OCTETSTRING_json_, &Requested__GANSS__Assistance__Data_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GANSS__Assistance__Data_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Requested__GANSS__Assistance__Data_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Requested__GANSS__Assistance__Data_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Requested__GANSS__Assistance__Data_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Requested__GANSS__Assistance__Data_ext_descr_ = { "@BSSGP_Types.Requested_GANSS_Assistance_Data.ext", &BITSTRING_ber_, &Requested__GANSS__Assistance__Data_ext_raw_, NULL, &Requested__GANSS__Assistance__Data_ext_xer_, &BITSTRING_json_, &Requested__GANSS__Assistance__Data_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GANSS__Assistance__Data_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Requested__GANSS__Assistance__Data_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Requested__GANSS__Assistance__Data_lengthIndicator
const TTCN_Typedescriptor_t Requested__GANSS__Assistance__Data_lengthIndicator_descr_ = { "@BSSGP_Types.Requested_GANSS_Assistance_Data.lengthIndicator", NULL, &Requested__GANSS__Assistance__Data_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GANSS__Assistance__Data_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Requested__GANSS__Assistance__Data_requested__GANSS__Assistance__Data__Value_xer_ = { {"requested_GANSS_Assistance_Data_Value>\n", "requested_GANSS_Assistance_Data_Value>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Requested__GANSS__Assistance__Data_requested__GANSS__Assistance__Data__Value_oer_ext_arr_[0] = {};
const int Requested__GANSS__Assistance__Data_requested__GANSS__Assistance__Data__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t Requested__GANSS__Assistance__Data_requested__GANSS__Assistance__Data__Value_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Requested__GANSS__Assistance__Data_requested__GANSS__Assistance__Data__Value_oer_ext_arr_, 0, Requested__GANSS__Assistance__Data_requested__GANSS__Assistance__Data__Value_oer_p_};
const TTCN_Typedescriptor_t Requested__GANSS__Assistance__Data_requested__GANSS__Assistance__Data__Value_descr_ = { "@BSSGP_Types.Requested_GANSS_Assistance_Data.requested_GANSS_Assistance_Data_Value", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &Requested__GANSS__Assistance__Data_requested__GANSS__Assistance__Data__Value_xer_, &OCTETSTRING_json_, &Requested__GANSS__Assistance__Data_requested__GANSS__Assistance__Data__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GANSS__Assistance__Data_requested__GANSS__Assistance__Data__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t Requested__GANSS__Assistance__Data_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Requested__GANSS__Assistance__Data
const TTCN_Typedescriptor_t Requested__GANSS__Assistance__Data_descr_ = { "@BSSGP_Types.Requested_GANSS_Assistance_Data", NULL, &Requested__GANSS__Assistance__Data_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Requested__GANSS__Assistance__Data_default_coding("RAW");
const XERdescriptor_t       GANSS__Location__Type_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int GANSS__Location__Type_iEI_oer_ext_arr_[0] = {};
const int GANSS__Location__Type_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t GANSS__Location__Type_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GANSS__Location__Type_iEI_oer_ext_arr_, 0, GANSS__Location__Type_iEI_oer_p_};
const TTCN_Typedescriptor_t GANSS__Location__Type_iEI_descr_ = { "@BSSGP_Types.GANSS_Location_Type.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GANSS__Location__Type_iEI_xer_, &OCTETSTRING_json_, &GANSS__Location__Type_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Location__Type_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t GANSS__Location__Type_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GANSS__Location__Type_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GANSS__Location__Type_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GANSS__Location__Type_ext_descr_ = { "@BSSGP_Types.GANSS_Location_Type.ext", &BITSTRING_ber_, &GANSS__Location__Type_ext_raw_, NULL, &GANSS__Location__Type_ext_xer_, &BITSTRING_json_, &GANSS__Location__Type_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Location__Type_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t GANSS__Location__Type_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GANSS__Location__Type_lengthIndicator
const TTCN_Typedescriptor_t GANSS__Location__Type_lengthIndicator_descr_ = { "@BSSGP_Types.GANSS_Location_Type.lengthIndicator", NULL, &GANSS__Location__Type_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Location__Type_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       GANSS__Location__Type_galileo_xer_ = { {"galileo>\n", "galileo>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GANSS__Location__Type_galileo_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GANSS__Location__Type_galileo_descr_ = { "@BSSGP_Types.GANSS_Location_Type.galileo", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &GANSS__Location__Type_galileo_xer_, &BITSTRING_json_, &GANSS__Location__Type_galileo_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Location__Type_galileo_default_coding("RAW");
const XERdescriptor_t       GANSS__Location__Type_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GANSS__Location__Type_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GANSS__Location__Type_spare_descr_ = { "@BSSGP_Types.GANSS_Location_Type.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &GANSS__Location__Type_spare_xer_, &BITSTRING_json_, &GANSS__Location__Type_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Location__Type_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t GANSS__Location__Type_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GANSS__Location__Type
const TTCN_Typedescriptor_t GANSS__Location__Type_descr_ = { "@BSSGP_Types.GANSS_Location_Type", NULL, &GANSS__Location__Type_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Location__Type_default_coding("RAW");
const XERdescriptor_t       GANSS__Positioning__Data_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int GANSS__Positioning__Data_iEI_oer_ext_arr_[0] = {};
const int GANSS__Positioning__Data_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t GANSS__Positioning__Data_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GANSS__Positioning__Data_iEI_oer_ext_arr_, 0, GANSS__Positioning__Data_iEI_oer_p_};
const TTCN_Typedescriptor_t GANSS__Positioning__Data_iEI_descr_ = { "@BSSGP_Types.GANSS_Positioning_Data.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GANSS__Positioning__Data_iEI_xer_, &OCTETSTRING_json_, &GANSS__Positioning__Data_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Positioning__Data_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t GANSS__Positioning__Data_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GANSS__Positioning__Data_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GANSS__Positioning__Data_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GANSS__Positioning__Data_ext_descr_ = { "@BSSGP_Types.GANSS_Positioning_Data.ext", &BITSTRING_ber_, &GANSS__Positioning__Data_ext_raw_, NULL, &GANSS__Positioning__Data_ext_xer_, &BITSTRING_json_, &GANSS__Positioning__Data_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Positioning__Data_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t GANSS__Positioning__Data_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GANSS__Positioning__Data_lengthIndicator
const TTCN_Typedescriptor_t GANSS__Positioning__Data_lengthIndicator_descr_ = { "@BSSGP_Types.GANSS_Positioning_Data.lengthIndicator", NULL, &GANSS__Positioning__Data_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Positioning__Data_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t GANSS__Positioning__DataList_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GANSS__Positioning__DataList
const TTCN_Typedescriptor_t GANSS__Positioning__DataList_descr_ = { "@BSSGP_Types.GANSS_Positioning_DataList", NULL, &GANSS__Positioning__DataList_raw_, NULL, NULL, NULL, NULL, NULL, &GANSS__Positioning__DataValue_descr_, TTCN_Typedescriptor_t::DONTCARE };
const XERdescriptor_t       GANSS__Positioning__DataValue_usage_xer_ = { {"usage>\n", "usage>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GANSS__Positioning__DataValue_usage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GANSS__Positioning__DataValue_usage_descr_ = { "@BSSGP_Types.GANSS_Positioning_DataValue.usage", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &GANSS__Positioning__DataValue_usage_xer_, &BITSTRING_json_, &GANSS__Positioning__DataValue_usage_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Positioning__DataValue_usage_default_coding("RAW");
const XERdescriptor_t       GANSS__Positioning__DataValue_gANSS__ID_xer_ = { {"gANSS_ID>\n", "gANSS_ID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GANSS__Positioning__DataValue_gANSS__ID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GANSS__Positioning__DataValue_gANSS__ID_descr_ = { "@BSSGP_Types.GANSS_Positioning_DataValue.gANSS_ID", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &GANSS__Positioning__DataValue_gANSS__ID_xer_, &BITSTRING_json_, &GANSS__Positioning__DataValue_gANSS__ID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Positioning__DataValue_gANSS__ID_default_coding("RAW");
const XERdescriptor_t       GANSS__Positioning__DataValue_method_xer_ = { {"method>\n", "method>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GANSS__Positioning__DataValue_method_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GANSS__Positioning__DataValue_method_descr_ = { "@BSSGP_Types.GANSS_Positioning_DataValue.method", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &GANSS__Positioning__DataValue_method_xer_, &BITSTRING_json_, &GANSS__Positioning__DataValue_method_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Positioning__DataValue_method_default_coding("RAW");
const TTCN_RAWdescriptor_t GANSS__Positioning__DataValue_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GANSS__Positioning__DataValue
const TTCN_Typedescriptor_t GANSS__Positioning__DataValue_descr_ = { "@BSSGP_Types.GANSS_Positioning_DataValue", NULL, &GANSS__Positioning__DataValue_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Positioning__DataValue_default_coding("RAW");
UNIVERSAL_CHARSTRING GANSS__Positioning__DataList_0_default_coding("RAW");
UNIVERSAL_CHARSTRING GANSS__Positioning__DataList_default_coding("RAW");
UNIVERSAL_CHARSTRING GANSS__Positioning__Data_gANSS__Positioning__DataList_default_coding("RAW");
const TTCN_RAWdescriptor_t GANSS__Positioning__Data_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GANSS__Positioning__Data
const TTCN_Typedescriptor_t GANSS__Positioning__Data_descr_ = { "@BSSGP_Types.GANSS_Positioning_Data", NULL, &GANSS__Positioning__Data_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GANSS__Positioning__Data_default_coding("RAW");
const XERdescriptor_t       Flow__Control__Granularity_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Flow__Control__Granularity_iEI_oer_ext_arr_[0] = {};
const int Flow__Control__Granularity_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Flow__Control__Granularity_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Flow__Control__Granularity_iEI_oer_ext_arr_, 0, Flow__Control__Granularity_iEI_oer_p_};
const TTCN_Typedescriptor_t Flow__Control__Granularity_iEI_descr_ = { "@BSSGP_Types.Flow_Control_Granularity.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Flow__Control__Granularity_iEI_xer_, &OCTETSTRING_json_, &Flow__Control__Granularity_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flow__Control__Granularity_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Flow__Control__Granularity_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Flow__Control__Granularity_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Flow__Control__Granularity_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Flow__Control__Granularity_ext_descr_ = { "@BSSGP_Types.Flow_Control_Granularity.ext", &BITSTRING_ber_, &Flow__Control__Granularity_ext_raw_, NULL, &Flow__Control__Granularity_ext_xer_, &BITSTRING_json_, &Flow__Control__Granularity_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flow__Control__Granularity_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Flow__Control__Granularity_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Flow__Control__Granularity_lengthIndicator
const TTCN_Typedescriptor_t Flow__Control__Granularity_lengthIndicator_descr_ = { "@BSSGP_Types.Flow_Control_Granularity.lengthIndicator", NULL, &Flow__Control__Granularity_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flow__Control__Granularity_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Flow__Control__Granularity_granularity_xer_ = { {"granularity>\n", "granularity>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Flow__Control__Granularity_granularity_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Flow__Control__Granularity_granularity_descr_ = { "@BSSGP_Types.Flow_Control_Granularity.granularity", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &Flow__Control__Granularity_granularity_xer_, &BITSTRING_json_, &Flow__Control__Granularity_granularity_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flow__Control__Granularity_granularity_default_coding("RAW");
const XERdescriptor_t       Flow__Control__Granularity_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Flow__Control__Granularity_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Flow__Control__Granularity_reserved_descr_ = { "@BSSGP_Types.Flow_Control_Granularity.reserved", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &Flow__Control__Granularity_reserved_xer_, &BITSTRING_json_, &Flow__Control__Granularity_reserved_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flow__Control__Granularity_reserved_default_coding("RAW");
const TTCN_RAWdescriptor_t Flow__Control__Granularity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Flow__Control__Granularity
const TTCN_Typedescriptor_t Flow__Control__Granularity_descr_ = { "@BSSGP_Types.Flow_Control_Granularity", NULL, &Flow__Control__Granularity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Flow__Control__Granularity_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ENB__Identifier_iEI_oer_ext_arr_[0] = {};
const int ENB__Identifier_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t ENB__Identifier_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ENB__Identifier_iEI_oer_ext_arr_, 0, ENB__Identifier_iEI_oer_p_};
const TTCN_Typedescriptor_t ENB__Identifier_iEI_descr_ = { "@BSSGP_Types.ENB_Identifier.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &ENB__Identifier_iEI_xer_, &OCTETSTRING_json_, &ENB__Identifier_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t ENB__Identifier_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       ENB__Identifier_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t ENB__Identifier_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t ENB__Identifier_ext_descr_ = { "@BSSGP_Types.ENB_Identifier.ext", &BITSTRING_ber_, &ENB__Identifier_ext_raw_, NULL, &ENB__Identifier_ext_xer_, &BITSTRING_json_, &ENB__Identifier_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t ENB__Identifier_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ENB__Identifier_lengthIndicator
const TTCN_Typedescriptor_t ENB__Identifier_lengthIndicator_descr_ = { "@BSSGP_Types.ENB_Identifier.lengthIndicator", NULL, &ENB__Identifier_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier_mccDigit1_descr_ = { "@BSSGP_Types.ENB_Identifier.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_mccDigit1_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier_mccDigit2_descr_ = { "@BSSGP_Types.ENB_Identifier.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_mccDigit2_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier_mccDigit3_descr_ = { "@BSSGP_Types.ENB_Identifier.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_mccDigit3_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier_mncDigit3_descr_ = { "@BSSGP_Types.ENB_Identifier.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_mncDigit3_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier_mncDigit1_descr_ = { "@BSSGP_Types.ENB_Identifier.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_mncDigit1_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t ENB__Identifier_mncDigit2_descr_ = { "@BSSGP_Types.ENB_Identifier.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &ENB__Identifier_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_mncDigit2_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier_tac_xer_ = { {"tac>\n", "tac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ENB__Identifier_tac_oer_ext_arr_[0] = {};
const int ENB__Identifier_tac_oer_p_[0] = {};
const TTCN_OERdescriptor_t ENB__Identifier_tac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ENB__Identifier_tac_oer_ext_arr_, 0, ENB__Identifier_tac_oer_p_};
const TTCN_Typedescriptor_t ENB__Identifier_tac_descr_ = { "@BSSGP_Types.ENB_Identifier.tac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &ENB__Identifier_tac_xer_, &OCTETSTRING_json_, &ENB__Identifier_tac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_tac_default_coding("RAW");
const XERdescriptor_t       ENB__Identifier_globalEnbID_xer_ = { {"globalEnbID>\n", "globalEnbID>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int ENB__Identifier_globalEnbID_oer_ext_arr_[0] = {};
const int ENB__Identifier_globalEnbID_oer_p_[0] = {};
const TTCN_OERdescriptor_t ENB__Identifier_globalEnbID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ENB__Identifier_globalEnbID_oer_ext_arr_, 0, ENB__Identifier_globalEnbID_oer_p_};
const TTCN_Typedescriptor_t ENB__Identifier_globalEnbID_descr_ = { "@BSSGP_Types.ENB_Identifier.globalEnbID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ENB__Identifier_globalEnbID_xer_, &OCTETSTRING_json_, &ENB__Identifier_globalEnbID_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_globalEnbID_default_coding("RAW");
const TTCN_RAWdescriptor_t ENB__Identifier_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for ENB__Identifier
const TTCN_Typedescriptor_t ENB__Identifier_descr_ = { "@BSSGP_Types.ENB_Identifier", NULL, &ENB__Identifier_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING ENB__Identifier_default_coding("RAW");
const XERdescriptor_t       Subscriber__Profile__ID__For__RAT__Priority_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Subscriber__Profile__ID__For__RAT__Priority_iEI_oer_ext_arr_[0] = {};
const int Subscriber__Profile__ID__For__RAT__Priority_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Subscriber__Profile__ID__For__RAT__Priority_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Subscriber__Profile__ID__For__RAT__Priority_iEI_oer_ext_arr_, 0, Subscriber__Profile__ID__For__RAT__Priority_iEI_oer_p_};
const TTCN_Typedescriptor_t Subscriber__Profile__ID__For__RAT__Priority_iEI_descr_ = { "@BSSGP_Types.Subscriber_Profile_ID_For_RAT_Priority.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Subscriber__Profile__ID__For__RAT__Priority_iEI_xer_, &OCTETSTRING_json_, &Subscriber__Profile__ID__For__RAT__Priority_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Subscriber__Profile__ID__For__RAT__Priority_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Subscriber__Profile__ID__For__RAT__Priority_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Subscriber__Profile__ID__For__RAT__Priority_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Subscriber__Profile__ID__For__RAT__Priority_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Subscriber__Profile__ID__For__RAT__Priority_ext_descr_ = { "@BSSGP_Types.Subscriber_Profile_ID_For_RAT_Priority.ext", &BITSTRING_ber_, &Subscriber__Profile__ID__For__RAT__Priority_ext_raw_, NULL, &Subscriber__Profile__ID__For__RAT__Priority_ext_xer_, &BITSTRING_json_, &Subscriber__Profile__ID__For__RAT__Priority_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Subscriber__Profile__ID__For__RAT__Priority_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Subscriber__Profile__ID__For__RAT__Priority_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Subscriber__Profile__ID__For__RAT__Priority_lengthIndicator
const TTCN_Typedescriptor_t Subscriber__Profile__ID__For__RAT__Priority_lengthIndicator_descr_ = { "@BSSGP_Types.Subscriber_Profile_ID_For_RAT_Priority.lengthIndicator", NULL, &Subscriber__Profile__ID__For__RAT__Priority_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Subscriber__Profile__ID__For__RAT__Priority_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Subscriber__Profile__ID__For__RAT__Priority_profile__ID_xer_ = { {"profile_ID>\n", "profile_ID>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Subscriber__Profile__ID__For__RAT__Priority_profile__ID_descr_ = { "@BSSGP_Types.Subscriber_Profile_ID_For_RAT_Priority.profile_ID", &BITSTRING_ber_, &General__Types::BIT8_raw_, NULL, &Subscriber__Profile__ID__For__RAT__Priority_profile__ID_xer_, &BITSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Subscriber__Profile__ID__For__RAT__Priority_profile__ID_default_coding("RAW");
const TTCN_RAWdescriptor_t Subscriber__Profile__ID__For__RAT__Priority_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Subscriber__Profile__ID__For__RAT__Priority
const TTCN_Typedescriptor_t Subscriber__Profile__ID__For__RAT__Priority_descr_ = { "@BSSGP_Types.Subscriber_Profile_ID_For_RAT_Priority", NULL, &Subscriber__Profile__ID__For__RAT__Priority_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Subscriber__Profile__ID__For__RAT__Priority_default_coding("RAW");
const XERdescriptor_t       Request__For__Inter__RAT__Handover__Info_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Request__For__Inter__RAT__Handover__Info_iEI_oer_ext_arr_[0] = {};
const int Request__For__Inter__RAT__Handover__Info_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Request__For__Inter__RAT__Handover__Info_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Request__For__Inter__RAT__Handover__Info_iEI_oer_ext_arr_, 0, Request__For__Inter__RAT__Handover__Info_iEI_oer_p_};
const TTCN_Typedescriptor_t Request__For__Inter__RAT__Handover__Info_iEI_descr_ = { "@BSSGP_Types.Request_For_Inter_RAT_Handover_Info.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Request__For__Inter__RAT__Handover__Info_iEI_xer_, &OCTETSTRING_json_, &Request__For__Inter__RAT__Handover__Info_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Request__For__Inter__RAT__Handover__Info_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Request__For__Inter__RAT__Handover__Info_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Request__For__Inter__RAT__Handover__Info_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Request__For__Inter__RAT__Handover__Info_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Request__For__Inter__RAT__Handover__Info_ext_descr_ = { "@BSSGP_Types.Request_For_Inter_RAT_Handover_Info.ext", &BITSTRING_ber_, &Request__For__Inter__RAT__Handover__Info_ext_raw_, NULL, &Request__For__Inter__RAT__Handover__Info_ext_xer_, &BITSTRING_json_, &Request__For__Inter__RAT__Handover__Info_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Request__For__Inter__RAT__Handover__Info_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Request__For__Inter__RAT__Handover__Info_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Request__For__Inter__RAT__Handover__Info_lengthIndicator
const TTCN_Typedescriptor_t Request__For__Inter__RAT__Handover__Info_lengthIndicator_descr_ = { "@BSSGP_Types.Request_For_Inter_RAT_Handover_Info.lengthIndicator", NULL, &Request__For__Inter__RAT__Handover__Info_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Request__For__Inter__RAT__Handover__Info_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Request__For__Inter__RAT__Handover__Info_interRATHandoverInfoRequest_xer_ = { {"interRATHandoverInfoRequest>\n", "interRATHandoverInfoRequest>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Request__For__Inter__RAT__Handover__Info_interRATHandoverInfoRequest_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Request__For__Inter__RAT__Handover__Info_interRATHandoverInfoRequest_descr_ = { "@BSSGP_Types.Request_For_Inter_RAT_Handover_Info.interRATHandoverInfoRequest", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Request__For__Inter__RAT__Handover__Info_interRATHandoverInfoRequest_xer_, &BITSTRING_json_, &Request__For__Inter__RAT__Handover__Info_interRATHandoverInfoRequest_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Request__For__Inter__RAT__Handover__Info_interRATHandoverInfoRequest_default_coding("RAW");
const XERdescriptor_t       Request__For__Inter__RAT__Handover__Info_eUTRANinterRATHandoverInfoRequest_xer_ = { {"eUTRANinterRATHandoverInfoRequest>\n", "eUTRANinterRATHandoverInfoRequest>\n"}, {35, 35}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Request__For__Inter__RAT__Handover__Info_eUTRANinterRATHandoverInfoRequest_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Request__For__Inter__RAT__Handover__Info_eUTRANinterRATHandoverInfoRequest_descr_ = { "@BSSGP_Types.Request_For_Inter_RAT_Handover_Info.eUTRANinterRATHandoverInfoRequest", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Request__For__Inter__RAT__Handover__Info_eUTRANinterRATHandoverInfoRequest_xer_, &BITSTRING_json_, &Request__For__Inter__RAT__Handover__Info_eUTRANinterRATHandoverInfoRequest_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Request__For__Inter__RAT__Handover__Info_eUTRANinterRATHandoverInfoRequest_default_coding("RAW");
const XERdescriptor_t       Request__For__Inter__RAT__Handover__Info_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Request__For__Inter__RAT__Handover__Info_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Request__For__Inter__RAT__Handover__Info_spare_descr_ = { "@BSSGP_Types.Request_For_Inter_RAT_Handover_Info.spare", &BITSTRING_ber_, &General__Types::BIT6_raw_, NULL, &Request__For__Inter__RAT__Handover__Info_spare_xer_, &BITSTRING_json_, &Request__For__Inter__RAT__Handover__Info_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Request__For__Inter__RAT__Handover__Info_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Request__For__Inter__RAT__Handover__Info_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Request__For__Inter__RAT__Handover__Info
const TTCN_Typedescriptor_t Request__For__Inter__RAT__Handover__Info_descr_ = { "@BSSGP_Types.Request_For_Inter_RAT_Handover_Info", NULL, &Request__For__Inter__RAT__Handover__Info_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Request__For__Inter__RAT__Handover__Info_default_coding("RAW");
const XERdescriptor_t       Reliable__Inter__RAT__Handover__Info_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Reliable__Inter__RAT__Handover__Info_iEI_oer_ext_arr_[0] = {};
const int Reliable__Inter__RAT__Handover__Info_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Reliable__Inter__RAT__Handover__Info_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Reliable__Inter__RAT__Handover__Info_iEI_oer_ext_arr_, 0, Reliable__Inter__RAT__Handover__Info_iEI_oer_p_};
const TTCN_Typedescriptor_t Reliable__Inter__RAT__Handover__Info_iEI_descr_ = { "@BSSGP_Types.Reliable_Inter_RAT_Handover_Info.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Reliable__Inter__RAT__Handover__Info_iEI_xer_, &OCTETSTRING_json_, &Reliable__Inter__RAT__Handover__Info_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Reliable__Inter__RAT__Handover__Info_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Reliable__Inter__RAT__Handover__Info_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Reliable__Inter__RAT__Handover__Info_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Reliable__Inter__RAT__Handover__Info_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Reliable__Inter__RAT__Handover__Info_ext_descr_ = { "@BSSGP_Types.Reliable_Inter_RAT_Handover_Info.ext", &BITSTRING_ber_, &Reliable__Inter__RAT__Handover__Info_ext_raw_, NULL, &Reliable__Inter__RAT__Handover__Info_ext_xer_, &BITSTRING_json_, &Reliable__Inter__RAT__Handover__Info_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Reliable__Inter__RAT__Handover__Info_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Reliable__Inter__RAT__Handover__Info_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Reliable__Inter__RAT__Handover__Info_lengthIndicator
const TTCN_Typedescriptor_t Reliable__Inter__RAT__Handover__Info_lengthIndicator_descr_ = { "@BSSGP_Types.Reliable_Inter_RAT_Handover_Info.lengthIndicator", NULL, &Reliable__Inter__RAT__Handover__Info_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Reliable__Inter__RAT__Handover__Info_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Reliable__Inter__RAT__Handover__Info_reliableInterRATHandoverInfoIndicator_xer_ = { {"reliableInterRATHandoverInfoIndicator>\n", "reliableInterRATHandoverInfoIndicator>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Reliable__Inter__RAT__Handover__Info_reliableInterRATHandoverInfoIndicator_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Reliable__Inter__RAT__Handover__Info_reliableInterRATHandoverInfoIndicator_descr_ = { "@BSSGP_Types.Reliable_Inter_RAT_Handover_Info.reliableInterRATHandoverInfoIndicator", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Reliable__Inter__RAT__Handover__Info_reliableInterRATHandoverInfoIndicator_xer_, &BITSTRING_json_, &Reliable__Inter__RAT__Handover__Info_reliableInterRATHandoverInfoIndicator_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Reliable__Inter__RAT__Handover__Info_reliableInterRATHandoverInfoIndicator_default_coding("RAW");
const XERdescriptor_t       Reliable__Inter__RAT__Handover__Info_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Reliable__Inter__RAT__Handover__Info_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Reliable__Inter__RAT__Handover__Info_spare_descr_ = { "@BSSGP_Types.Reliable_Inter_RAT_Handover_Info.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &Reliable__Inter__RAT__Handover__Info_spare_xer_, &BITSTRING_json_, &Reliable__Inter__RAT__Handover__Info_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Reliable__Inter__RAT__Handover__Info_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Reliable__Inter__RAT__Handover__Info_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Reliable__Inter__RAT__Handover__Info
const TTCN_Typedescriptor_t Reliable__Inter__RAT__Handover__Info_descr_ = { "@BSSGP_Types.Reliable_Inter_RAT_Handover_Info", NULL, &Reliable__Inter__RAT__Handover__Info_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Reliable__Inter__RAT__Handover__Info_default_coding("RAW");
const XERdescriptor_t       CSG__Identifier__TLV_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int CSG__Identifier__TLV_iEI_oer_ext_arr_[0] = {};
const int CSG__Identifier__TLV_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t CSG__Identifier__TLV_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CSG__Identifier__TLV_iEI_oer_ext_arr_, 0, CSG__Identifier__TLV_iEI_oer_p_};
const TTCN_Typedescriptor_t CSG__Identifier__TLV_iEI_descr_ = { "@BSSGP_Types.CSG_Identifier_TLV.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CSG__Identifier__TLV_iEI_xer_, &OCTETSTRING_json_, &CSG__Identifier__TLV_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CSG__Identifier__TLV_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t CSG__Identifier__TLV_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       CSG__Identifier__TLV_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CSG__Identifier__TLV_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CSG__Identifier__TLV_ext_descr_ = { "@BSSGP_Types.CSG_Identifier_TLV.ext", &BITSTRING_ber_, &CSG__Identifier__TLV_ext_raw_, NULL, &CSG__Identifier__TLV_ext_xer_, &BITSTRING_json_, &CSG__Identifier__TLV_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CSG__Identifier__TLV_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t CSG__Identifier__TLV_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for CSG__Identifier__TLV_lengthIndicator
const TTCN_Typedescriptor_t CSG__Identifier__TLV_lengthIndicator_descr_ = { "@BSSGP_Types.CSG_Identifier_TLV.lengthIndicator", NULL, &CSG__Identifier__TLV_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CSG__Identifier__TLV_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       CSG__Identity_cSG__Id24_xer_ = { {"cSG_Id24>\n", "cSG_Id24>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int CSG__Identity_cSG__Id24_oer_ext_arr_[0] = {};
const int CSG__Identity_cSG__Id24_oer_p_[0] = {};
const TTCN_OERdescriptor_t CSG__Identity_cSG__Id24_oer_ = { -1, TRUE, 3, FALSE, 0, 0, CSG__Identity_cSG__Id24_oer_ext_arr_, 0, CSG__Identity_cSG__Id24_oer_p_};
const TTCN_Typedescriptor_t CSG__Identity_cSG__Id24_descr_ = { "@BSSGP_Types.CSG_Identity.cSG_Id24", &OCTETSTRING_ber_, &General__Types::OCT3_raw_, &OCTETSTRING_text_, &CSG__Identity_cSG__Id24_xer_, &OCTETSTRING_json_, &CSG__Identity_cSG__Id24_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CSG__Identity_cSG__Id24_default_coding("RAW");
const XERdescriptor_t       CSG__Identity_cSG__Id3_xer_ = { {"cSG_Id3>\n", "cSG_Id3>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CSG__Identity_cSG__Id3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CSG__Identity_cSG__Id3_descr_ = { "@BSSGP_Types.CSG_Identity.cSG_Id3", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &CSG__Identity_cSG__Id3_xer_, &BITSTRING_json_, &CSG__Identity_cSG__Id3_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CSG__Identity_cSG__Id3_default_coding("RAW");
const XERdescriptor_t       CSG__Identity_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CSG__Identity_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CSG__Identity_spare_descr_ = { "@BSSGP_Types.CSG_Identity.spare", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &CSG__Identity_spare_xer_, &BITSTRING_json_, &CSG__Identity_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CSG__Identity_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t CSG__Identity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for CSG__Identity
const TTCN_Typedescriptor_t CSG__Identity_descr_ = { "@BSSGP_Types.CSG_Identity", NULL, &CSG__Identity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CSG__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING CSG__Identifier__TLV_cSG__Identity_default_coding("RAW");
const XERdescriptor_t       CSG__Identifier__TLV_cell__Acces__Mode_xer_ = { {"cell_Acces_Mode>\n", "cell_Acces_Mode>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CSG__Identifier__TLV_cell__Acces__Mode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CSG__Identifier__TLV_cell__Acces__Mode_descr_ = { "@BSSGP_Types.CSG_Identifier_TLV.cell_Acces_Mode", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &CSG__Identifier__TLV_cell__Acces__Mode_xer_, &BITSTRING_json_, &CSG__Identifier__TLV_cell__Acces__Mode_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CSG__Identifier__TLV_cell__Acces__Mode_default_coding("RAW");
const XERdescriptor_t       CSG__Identifier__TLV_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t CSG__Identifier__TLV_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t CSG__Identifier__TLV_spare_descr_ = { "@BSSGP_Types.CSG_Identifier_TLV.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &CSG__Identifier__TLV_spare_xer_, &BITSTRING_json_, &CSG__Identifier__TLV_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CSG__Identifier__TLV_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t CSG__Identifier__TLV_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for CSG__Identifier__TLV
const TTCN_Typedescriptor_t CSG__Identifier__TLV_descr_ = { "@BSSGP_Types.CSG_Identifier_TLV", NULL, &CSG__Identifier__TLV_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING CSG__Identifier__TLV_default_coding("RAW");
const XERdescriptor_t       Tracking__Area__Code__TLV_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Tracking__Area__Code__TLV_iEI_oer_ext_arr_[0] = {};
const int Tracking__Area__Code__TLV_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Tracking__Area__Code__TLV_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Tracking__Area__Code__TLV_iEI_oer_ext_arr_, 0, Tracking__Area__Code__TLV_iEI_oer_p_};
const TTCN_Typedescriptor_t Tracking__Area__Code__TLV_iEI_descr_ = { "@BSSGP_Types.Tracking_Area_Code_TLV.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Tracking__Area__Code__TLV_iEI_xer_, &OCTETSTRING_json_, &Tracking__Area__Code__TLV_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Tracking__Area__Code__TLV_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Tracking__Area__Code__TLV_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Tracking__Area__Code__TLV_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Tracking__Area__Code__TLV_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Tracking__Area__Code__TLV_ext_descr_ = { "@BSSGP_Types.Tracking_Area_Code_TLV.ext", &BITSTRING_ber_, &Tracking__Area__Code__TLV_ext_raw_, NULL, &Tracking__Area__Code__TLV_ext_xer_, &BITSTRING_json_, &Tracking__Area__Code__TLV_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Tracking__Area__Code__TLV_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Tracking__Area__Code__TLV_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Tracking__Area__Code__TLV_lengthIndicator
const TTCN_Typedescriptor_t Tracking__Area__Code__TLV_lengthIndicator_descr_ = { "@BSSGP_Types.Tracking_Area_Code_TLV.lengthIndicator", NULL, &Tracking__Area__Code__TLV_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Tracking__Area__Code__TLV_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Tracking__Area__Code__TLV_valueField_xer_ = { {"valueField>\n", "valueField>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Tracking__Area__Code__TLV_valueField_oer_ext_arr_[0] = {};
const int Tracking__Area__Code__TLV_valueField_oer_p_[0] = {};
const TTCN_OERdescriptor_t Tracking__Area__Code__TLV_valueField_oer_ = { -1, TRUE, 3, FALSE, 0, 0, Tracking__Area__Code__TLV_valueField_oer_ext_arr_, 0, Tracking__Area__Code__TLV_valueField_oer_p_};
const TTCN_Typedescriptor_t Tracking__Area__Code__TLV_valueField_descr_ = { "@BSSGP_Types.Tracking_Area_Code_TLV.valueField", &OCTETSTRING_ber_, &General__Types::OCT3_raw_, &OCTETSTRING_text_, &Tracking__Area__Code__TLV_valueField_xer_, &OCTETSTRING_json_, &Tracking__Area__Code__TLV_valueField_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Tracking__Area__Code__TLV_valueField_default_coding("RAW");
const TTCN_RAWdescriptor_t Tracking__Area__Code__TLV_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Tracking__Area__Code__TLV
const TTCN_Typedescriptor_t Tracking__Area__Code__TLV_descr_ = { "@BSSGP_Types.Tracking_Area_Code_TLV", NULL, &Tracking__Area__Code__TLV_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Tracking__Area__Code__TLV_default_coding("RAW");
const XERdescriptor_t       Redirect__Attempt__Flag_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Redirect__Attempt__Flag_iEI_oer_ext_arr_[0] = {};
const int Redirect__Attempt__Flag_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Redirect__Attempt__Flag_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Redirect__Attempt__Flag_iEI_oer_ext_arr_, 0, Redirect__Attempt__Flag_iEI_oer_p_};
const TTCN_Typedescriptor_t Redirect__Attempt__Flag_iEI_descr_ = { "@BSSGP_Types.Redirect_Attempt_Flag.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Redirect__Attempt__Flag_iEI_xer_, &OCTETSTRING_json_, &Redirect__Attempt__Flag_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirect__Attempt__Flag_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Redirect__Attempt__Flag_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Redirect__Attempt__Flag_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Redirect__Attempt__Flag_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Redirect__Attempt__Flag_ext_descr_ = { "@BSSGP_Types.Redirect_Attempt_Flag.ext", &BITSTRING_ber_, &Redirect__Attempt__Flag_ext_raw_, NULL, &Redirect__Attempt__Flag_ext_xer_, &BITSTRING_json_, &Redirect__Attempt__Flag_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirect__Attempt__Flag_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Redirect__Attempt__Flag_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Redirect__Attempt__Flag_lengthIndicator
const TTCN_Typedescriptor_t Redirect__Attempt__Flag_lengthIndicator_descr_ = { "@BSSGP_Types.Redirect_Attempt_Flag.lengthIndicator", NULL, &Redirect__Attempt__Flag_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirect__Attempt__Flag_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Redirect__Attempt__Flag_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Redirect__Attempt__Flag_spare_oer_ext_arr_[0] = {};
const int Redirect__Attempt__Flag_spare_oer_p_[0] = {};
const TTCN_OERdescriptor_t Redirect__Attempt__Flag_spare_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Redirect__Attempt__Flag_spare_oer_ext_arr_, 0, Redirect__Attempt__Flag_spare_oer_p_};
const TTCN_Typedescriptor_t Redirect__Attempt__Flag_spare_descr_ = { "@BSSGP_Types.Redirect_Attempt_Flag.spare", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Redirect__Attempt__Flag_spare_xer_, &OCTETSTRING_json_, &Redirect__Attempt__Flag_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirect__Attempt__Flag_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Redirect__Attempt__Flag_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Redirect__Attempt__Flag
const TTCN_Typedescriptor_t Redirect__Attempt__Flag_descr_ = { "@BSSGP_Types.Redirect_Attempt_Flag", NULL, &Redirect__Attempt__Flag_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirect__Attempt__Flag_default_coding("RAW");
const XERdescriptor_t       Redirection__Indication_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Redirection__Indication_iEI_oer_ext_arr_[0] = {};
const int Redirection__Indication_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Redirection__Indication_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Redirection__Indication_iEI_oer_ext_arr_, 0, Redirection__Indication_iEI_oer_p_};
const TTCN_Typedescriptor_t Redirection__Indication_iEI_descr_ = { "@BSSGP_Types.Redirection_Indication.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Redirection__Indication_iEI_xer_, &OCTETSTRING_json_, &Redirection__Indication_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirection__Indication_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Redirection__Indication_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Redirection__Indication_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Redirection__Indication_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Redirection__Indication_ext_descr_ = { "@BSSGP_Types.Redirection_Indication.ext", &BITSTRING_ber_, &Redirection__Indication_ext_raw_, NULL, &Redirection__Indication_ext_xer_, &BITSTRING_json_, &Redirection__Indication_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirection__Indication_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Redirection__Indication_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Redirection__Indication_lengthIndicator
const TTCN_Typedescriptor_t Redirection__Indication_lengthIndicator_descr_ = { "@BSSGP_Types.Redirection_Indication.lengthIndicator", NULL, &Redirection__Indication_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirection__Indication_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Redirection__Indication_reroute__Reject__Cause__value_xer_ = { {"reroute_Reject_Cause_value>\n", "reroute_Reject_Cause_value>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Redirection__Indication_reroute__Reject__Cause__value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Redirection__Indication_reroute__Reject__Cause__value_descr_ = { "@BSSGP_Types.Redirection_Indication.reroute_Reject_Cause_value", &BITSTRING_ber_, &General__Types::BIT8_raw_, NULL, &Redirection__Indication_reroute__Reject__Cause__value_xer_, &BITSTRING_json_, &Redirection__Indication_reroute__Reject__Cause__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirection__Indication_reroute__Reject__Cause__value_default_coding("RAW");
const TTCN_RAWdescriptor_t Redirection__Indication_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Redirection__Indication
const TTCN_Typedescriptor_t Redirection__Indication_descr_ = { "@BSSGP_Types.Redirection_Indication", NULL, &Redirection__Indication_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirection__Indication_default_coding("RAW");
const XERdescriptor_t       Redirection__Completed_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Redirection__Completed_iEI_oer_ext_arr_[0] = {};
const int Redirection__Completed_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Redirection__Completed_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Redirection__Completed_iEI_oer_ext_arr_, 0, Redirection__Completed_iEI_oer_p_};
const TTCN_Typedescriptor_t Redirection__Completed_iEI_descr_ = { "@BSSGP_Types.Redirection_Completed.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Redirection__Completed_iEI_xer_, &OCTETSTRING_json_, &Redirection__Completed_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirection__Completed_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Redirection__Completed_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Redirection__Completed_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Redirection__Completed_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Redirection__Completed_ext_descr_ = { "@BSSGP_Types.Redirection_Completed.ext", &BITSTRING_ber_, &Redirection__Completed_ext_raw_, NULL, &Redirection__Completed_ext_xer_, &BITSTRING_json_, &Redirection__Completed_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirection__Completed_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Redirection__Completed_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Redirection__Completed_lengthIndicator
const TTCN_Typedescriptor_t Redirection__Completed_lengthIndicator_descr_ = { "@BSSGP_Types.Redirection_Completed.lengthIndicator", NULL, &Redirection__Completed_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirection__Completed_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Redirection__Completed_outcome__value_xer_ = { {"outcome_value>\n", "outcome_value>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Redirection__Completed_outcome__value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Redirection__Completed_outcome__value_descr_ = { "@BSSGP_Types.Redirection_Completed.outcome_value", &BITSTRING_ber_, &General__Types::BIT8_raw_, NULL, &Redirection__Completed_outcome__value_xer_, &BITSTRING_json_, &Redirection__Completed_outcome__value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirection__Completed_outcome__value_default_coding("RAW");
const TTCN_RAWdescriptor_t Redirection__Completed_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Redirection__Completed
const TTCN_Typedescriptor_t Redirection__Completed_descr_ = { "@BSSGP_Types.Redirection_Completed", NULL, &Redirection__Completed_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Redirection__Completed_default_coding("RAW");
const XERdescriptor_t       Unconfirmed__Send__State__Variable_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Unconfirmed__Send__State__Variable_iEI_oer_ext_arr_[0] = {};
const int Unconfirmed__Send__State__Variable_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Unconfirmed__Send__State__Variable_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Unconfirmed__Send__State__Variable_iEI_oer_ext_arr_, 0, Unconfirmed__Send__State__Variable_iEI_oer_p_};
const TTCN_Typedescriptor_t Unconfirmed__Send__State__Variable_iEI_descr_ = { "@BSSGP_Types.Unconfirmed_Send_State_Variable.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Unconfirmed__Send__State__Variable_iEI_xer_, &OCTETSTRING_json_, &Unconfirmed__Send__State__Variable_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Unconfirmed__Send__State__Variable_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Unconfirmed__Send__State__Variable_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Unconfirmed__Send__State__Variable_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Unconfirmed__Send__State__Variable_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Unconfirmed__Send__State__Variable_ext_descr_ = { "@BSSGP_Types.Unconfirmed_Send_State_Variable.ext", &BITSTRING_ber_, &Unconfirmed__Send__State__Variable_ext_raw_, NULL, &Unconfirmed__Send__State__Variable_ext_xer_, &BITSTRING_json_, &Unconfirmed__Send__State__Variable_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Unconfirmed__Send__State__Variable_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Unconfirmed__Send__State__Variable_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Unconfirmed__Send__State__Variable_lengthIndicator
const TTCN_Typedescriptor_t Unconfirmed__Send__State__Variable_lengthIndicator_descr_ = { "@BSSGP_Types.Unconfirmed_Send_State_Variable.lengthIndicator", NULL, &Unconfirmed__Send__State__Variable_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Unconfirmed__Send__State__Variable_lengthIndicator_default_coding("RAW");
const TTCN_RAWdescriptor_t Unconfirmed__Send__State__Variable_spare_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,7,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Unconfirmed__Send__State__Variable_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Unconfirmed__Send__State__Variable_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Unconfirmed__Send__State__Variable_spare_descr_ = { "@BSSGP_Types.Unconfirmed_Send_State_Variable.spare", &BITSTRING_ber_, &Unconfirmed__Send__State__Variable_spare_raw_, NULL, &Unconfirmed__Send__State__Variable_spare_xer_, &BITSTRING_json_, &Unconfirmed__Send__State__Variable_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Unconfirmed__Send__State__Variable_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Unconfirmed__Send__State__Variable_vU_raw_ = {9,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Unconfirmed__Send__State__Variable_vU_xer_ = { {"vU>\n", "vU>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Unconfirmed__Send__State__Variable_vU_descr_ = { "@BSSGP_Types.Unconfirmed_Send_State_Variable.vU", &INTEGER_ber_, &Unconfirmed__Send__State__Variable_vU_raw_, &INTEGER_text_, &Unconfirmed__Send__State__Variable_vU_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Unconfirmed__Send__State__Variable_vU_default_coding("RAW");
const TTCN_RAWdescriptor_t Unconfirmed__Send__State__Variable_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Unconfirmed__Send__State__Variable
const TTCN_Typedescriptor_t Unconfirmed__Send__State__Variable_descr_ = { "@BSSGP_Types.Unconfirmed_Send_State_Variable", NULL, &Unconfirmed__Send__State__Variable_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Unconfirmed__Send__State__Variable_default_coding("RAW");
UNIVERSAL_CHARSTRING RNC__Id__with__Transparent__Container__BSSGP_target__RNC__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING RNC__Id__with__Transparent__Container__BSSGP_source__to__Target__Transparent__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t RNC__Id__with__Transparent__Container__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for RNC__Id__with__Transparent__Container__BSSGP
const TTCN_Typedescriptor_t RNC__Id__with__Transparent__Container__BSSGP_descr_ = { "@BSSGP_Types.RNC_Id_with_Transparent_Container_BSSGP", NULL, &RNC__Id__with__Transparent__Container__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING RNC__Id__with__Transparent__Container__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t Cell__or__RNC__Id__with__Transparent__Container__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Cell__or__RNC__Id__with__Transparent__Container__BSSGP
const TTCN_Typedescriptor_t Cell__or__RNC__Id__with__Transparent__Container__BSSGP_descr_ = { "@BSSGP_Types.Cell_or_RNC_Id_with_Transparent_Container_BSSGP", NULL, &Cell__or__RNC__Id__with__Transparent__Container__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Id__with__Transparent__Container__BSSGP_target__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING Cell__Id__with__Transparent__Container__BSSGP_source__BSS__to__Target__BSS__Transparent__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t Cell__Id__with__Transparent__Container__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Cell__Id__with__Transparent__Container__BSSGP
const TTCN_Typedescriptor_t Cell__Id__with__Transparent__Container__BSSGP_descr_ = { "@BSSGP_Types.Cell_Id_with_Transparent_Container_BSSGP", NULL, &Cell__Id__with__Transparent__Container__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Cell__Id__with__Transparent__Container__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING Cell__or__RNC__Id__with__Transparent__Container__BSSGP_cell__Id__with__Transparent__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Cell__or__RNC__Id__with__Transparent__Container__BSSGP_rnc__Id__with__Transparent__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING Cell__or__RNC__Id__with__Transparent__Container__BSSGP_default_coding("RAW");
const XERdescriptor_t       SCI_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SCI_iEI_oer_ext_arr_[0] = {};
const int SCI_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t SCI_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SCI_iEI_oer_ext_arr_, 0, SCI_iEI_oer_p_};
const TTCN_Typedescriptor_t SCI_iEI_descr_ = { "@BSSGP_Types.SCI.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SCI_iEI_xer_, &OCTETSTRING_json_, &SCI_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SCI_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t SCI_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       SCI_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t SCI_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t SCI_ext_descr_ = { "@BSSGP_Types.SCI.ext", &BITSTRING_ber_, &SCI_ext_raw_, NULL, &SCI_ext_xer_, &BITSTRING_json_, &SCI_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SCI_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t SCI_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SCI_lengthIndicator
const TTCN_Typedescriptor_t SCI_lengthIndicator_descr_ = { "@BSSGP_Types.SCI.lengthIndicator", NULL, &SCI_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SCI_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       SCI_service__Class__Value_xer_ = { {"service_Class_Value>\n", "service_Class_Value>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int SCI_service__Class__Value_oer_ext_arr_[0] = {};
const int SCI_service__Class__Value_oer_p_[0] = {};
const TTCN_OERdescriptor_t SCI_service__Class__Value_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SCI_service__Class__Value_oer_ext_arr_, 0, SCI_service__Class__Value_oer_p_};
const TTCN_Typedescriptor_t SCI_service__Class__Value_descr_ = { "@BSSGP_Types.SCI.service_Class_Value", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SCI_service__Class__Value_xer_, &OCTETSTRING_json_, &SCI_service__Class__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SCI_service__Class__Value_default_coding("RAW");
const TTCN_RAWdescriptor_t SCI_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for SCI
const TTCN_Typedescriptor_t SCI_descr_ = { "@BSSGP_Types.SCI", NULL, &SCI_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING SCI_default_coding("RAW");
const XERdescriptor_t       GGSN__PGW__Location_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int GGSN__PGW__Location_iEI_oer_ext_arr_[0] = {};
const int GGSN__PGW__Location_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t GGSN__PGW__Location_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GGSN__PGW__Location_iEI_oer_ext_arr_, 0, GGSN__PGW__Location_iEI_oer_p_};
const TTCN_Typedescriptor_t GGSN__PGW__Location_iEI_descr_ = { "@BSSGP_Types.GGSN_PGW_Location.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GGSN__PGW__Location_iEI_xer_, &OCTETSTRING_json_, &GGSN__PGW__Location_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GGSN__PGW__Location_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t GGSN__PGW__Location_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       GGSN__PGW__Location_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GGSN__PGW__Location_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GGSN__PGW__Location_ext_descr_ = { "@BSSGP_Types.GGSN_PGW_Location.ext", &BITSTRING_ber_, &GGSN__PGW__Location_ext_raw_, NULL, &GGSN__PGW__Location_ext_xer_, &BITSTRING_json_, &GGSN__PGW__Location_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GGSN__PGW__Location_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t GGSN__PGW__Location_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GGSN__PGW__Location_lengthIndicator
const TTCN_Typedescriptor_t GGSN__PGW__Location_lengthIndicator_descr_ = { "@BSSGP_Types.GGSN_PGW_Location.lengthIndicator", NULL, &GGSN__PGW__Location_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GGSN__PGW__Location_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       GGSN__PGW__Location_gGSN__PGW__Location__Value_xer_ = { {"gGSN_PGW_Location_Value>\n", "gGSN_PGW_Location_Value>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GGSN__PGW__Location_gGSN__PGW__Location__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GGSN__PGW__Location_gGSN__PGW__Location__Value_descr_ = { "@BSSGP_Types.GGSN_PGW_Location.gGSN_PGW_Location_Value", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &GGSN__PGW__Location_gGSN__PGW__Location__Value_xer_, &BITSTRING_json_, &GGSN__PGW__Location_gGSN__PGW__Location__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GGSN__PGW__Location_gGSN__PGW__Location__Value_default_coding("RAW");
const XERdescriptor_t       GGSN__PGW__Location_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t GGSN__PGW__Location_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t GGSN__PGW__Location_spare_descr_ = { "@BSSGP_Types.GGSN_PGW_Location.spare", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &GGSN__PGW__Location_spare_xer_, &BITSTRING_json_, &GGSN__PGW__Location_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GGSN__PGW__Location_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t GGSN__PGW__Location_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for GGSN__PGW__Location
const TTCN_Typedescriptor_t GGSN__PGW__Location_descr_ = { "@BSSGP_Types.GGSN_PGW_Location", NULL, &GGSN__PGW__Location_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING GGSN__PGW__Location_default_coding("RAW");
const XERdescriptor_t       Selected__PLMN__ID_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Selected__PLMN__ID_iEI_oer_ext_arr_[0] = {};
const int Selected__PLMN__ID_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Selected__PLMN__ID_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Selected__PLMN__ID_iEI_oer_ext_arr_, 0, Selected__PLMN__ID_iEI_oer_p_};
const TTCN_Typedescriptor_t Selected__PLMN__ID_iEI_descr_ = { "@BSSGP_Types.Selected_PLMN_ID.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Selected__PLMN__ID_iEI_xer_, &OCTETSTRING_json_, &Selected__PLMN__ID_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Selected__PLMN__ID_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Selected__PLMN__ID_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Selected__PLMN__ID_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Selected__PLMN__ID_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Selected__PLMN__ID_ext_descr_ = { "@BSSGP_Types.Selected_PLMN_ID.ext", &BITSTRING_ber_, &Selected__PLMN__ID_ext_raw_, NULL, &Selected__PLMN__ID_ext_xer_, &BITSTRING_json_, &Selected__PLMN__ID_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Selected__PLMN__ID_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Selected__PLMN__ID_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Selected__PLMN__ID_lengthIndicator
const TTCN_Typedescriptor_t Selected__PLMN__ID_lengthIndicator_descr_ = { "@BSSGP_Types.Selected_PLMN_ID.lengthIndicator", NULL, &Selected__PLMN__ID_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Selected__PLMN__ID_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Selected__PLMN__ID_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Selected__PLMN__ID_mccDigit1_descr_ = { "@BSSGP_Types.Selected_PLMN_ID.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Selected__PLMN__ID_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Selected__PLMN__ID_mccDigit1_default_coding("RAW");
const XERdescriptor_t       Selected__PLMN__ID_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Selected__PLMN__ID_mccDigit2_descr_ = { "@BSSGP_Types.Selected_PLMN_ID.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Selected__PLMN__ID_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Selected__PLMN__ID_mccDigit2_default_coding("RAW");
const XERdescriptor_t       Selected__PLMN__ID_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Selected__PLMN__ID_mccDigit3_descr_ = { "@BSSGP_Types.Selected_PLMN_ID.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Selected__PLMN__ID_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Selected__PLMN__ID_mccDigit3_default_coding("RAW");
const XERdescriptor_t       Selected__PLMN__ID_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Selected__PLMN__ID_mncDigit3_descr_ = { "@BSSGP_Types.Selected_PLMN_ID.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Selected__PLMN__ID_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Selected__PLMN__ID_mncDigit3_default_coding("RAW");
const XERdescriptor_t       Selected__PLMN__ID_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Selected__PLMN__ID_mncDigit1_descr_ = { "@BSSGP_Types.Selected_PLMN_ID.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Selected__PLMN__ID_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Selected__PLMN__ID_mncDigit1_default_coding("RAW");
const XERdescriptor_t       Selected__PLMN__ID_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Selected__PLMN__ID_mncDigit2_descr_ = { "@BSSGP_Types.Selected_PLMN_ID.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Selected__PLMN__ID_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Selected__PLMN__ID_mncDigit2_default_coding("RAW");
const TTCN_RAWdescriptor_t Selected__PLMN__ID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Selected__PLMN__ID
const TTCN_Typedescriptor_t Selected__PLMN__ID_descr_ = { "@BSSGP_Types.Selected_PLMN_ID", NULL, &Selected__PLMN__ID_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Selected__PLMN__ID_default_coding("RAW");
const XERdescriptor_t       Priority__Class__Indicator_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Priority__Class__Indicator_iEI_oer_ext_arr_[0] = {};
const int Priority__Class__Indicator_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Priority__Class__Indicator_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Priority__Class__Indicator_iEI_oer_ext_arr_, 0, Priority__Class__Indicator_iEI_oer_p_};
const TTCN_Typedescriptor_t Priority__Class__Indicator_iEI_descr_ = { "@BSSGP_Types.Priority_Class_Indicator.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Priority__Class__Indicator_iEI_xer_, &OCTETSTRING_json_, &Priority__Class__Indicator_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__Class__Indicator_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Priority__Class__Indicator_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Priority__Class__Indicator_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Priority__Class__Indicator_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Priority__Class__Indicator_ext_descr_ = { "@BSSGP_Types.Priority_Class_Indicator.ext", &BITSTRING_ber_, &Priority__Class__Indicator_ext_raw_, NULL, &Priority__Class__Indicator_ext_xer_, &BITSTRING_json_, &Priority__Class__Indicator_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__Class__Indicator_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Priority__Class__Indicator_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Priority__Class__Indicator_lengthIndicator
const TTCN_Typedescriptor_t Priority__Class__Indicator_lengthIndicator_descr_ = { "@BSSGP_Types.Priority_Class_Indicator.lengthIndicator", NULL, &Priority__Class__Indicator_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__Class__Indicator_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Priority__Class__Indicator_priority__Class__Indicator__Value_xer_ = { {"priority_Class_Indicator_Value>\n", "priority_Class_Indicator_Value>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Priority__Class__Indicator_priority__Class__Indicator__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Priority__Class__Indicator_priority__Class__Indicator__Value_descr_ = { "@BSSGP_Types.Priority_Class_Indicator.priority_Class_Indicator_Value", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &Priority__Class__Indicator_priority__Class__Indicator__Value_xer_, &BITSTRING_json_, &Priority__Class__Indicator_priority__Class__Indicator__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__Class__Indicator_priority__Class__Indicator__Value_default_coding("RAW");
const XERdescriptor_t       Priority__Class__Indicator_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Priority__Class__Indicator_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Priority__Class__Indicator_spare_descr_ = { "@BSSGP_Types.Priority_Class_Indicator.spare", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &Priority__Class__Indicator_spare_xer_, &BITSTRING_json_, &Priority__Class__Indicator_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__Class__Indicator_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Priority__Class__Indicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Priority__Class__Indicator
const TTCN_Typedescriptor_t Priority__Class__Indicator_descr_ = { "@BSSGP_Types.Priority_Class_Indicator", NULL, &Priority__Class__Indicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Priority__Class__Indicator_default_coding("RAW");
const XERdescriptor_t       EDRX__Parameters_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int EDRX__Parameters_iEI_oer_ext_arr_[0] = {};
const int EDRX__Parameters_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t EDRX__Parameters_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EDRX__Parameters_iEI_oer_ext_arr_, 0, EDRX__Parameters_iEI_oer_p_};
const TTCN_Typedescriptor_t EDRX__Parameters_iEI_descr_ = { "@BSSGP_Types.EDRX_Parameters.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &EDRX__Parameters_iEI_xer_, &OCTETSTRING_json_, &EDRX__Parameters_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EDRX__Parameters_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t EDRX__Parameters_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       EDRX__Parameters_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EDRX__Parameters_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EDRX__Parameters_ext_descr_ = { "@BSSGP_Types.EDRX_Parameters.ext", &BITSTRING_ber_, &EDRX__Parameters_ext_raw_, NULL, &EDRX__Parameters_ext_xer_, &BITSTRING_json_, &EDRX__Parameters_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EDRX__Parameters_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t EDRX__Parameters_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for EDRX__Parameters_lengthIndicator
const TTCN_Typedescriptor_t EDRX__Parameters_lengthIndicator_descr_ = { "@BSSGP_Types.EDRX_Parameters.lengthIndicator", NULL, &EDRX__Parameters_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EDRX__Parameters_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       EDRX__Parameters_eDRX__Cycle__Value_xer_ = { {"eDRX_Cycle_Value>\n", "eDRX_Cycle_Value>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EDRX__Parameters_eDRX__Cycle__Value_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EDRX__Parameters_eDRX__Cycle__Value_descr_ = { "@BSSGP_Types.EDRX_Parameters.eDRX_Cycle_Value", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EDRX__Parameters_eDRX__Cycle__Value_xer_, &BITSTRING_json_, &EDRX__Parameters_eDRX__Cycle__Value_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EDRX__Parameters_eDRX__Cycle__Value_default_coding("RAW");
const XERdescriptor_t       EDRX__Parameters_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t EDRX__Parameters_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t EDRX__Parameters_spare_descr_ = { "@BSSGP_Types.EDRX_Parameters.spare", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &EDRX__Parameters_spare_xer_, &BITSTRING_json_, &EDRX__Parameters_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EDRX__Parameters_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t EDRX__Parameters_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for EDRX__Parameters
const TTCN_Typedescriptor_t EDRX__Parameters_descr_ = { "@BSSGP_Types.EDRX_Parameters", NULL, &EDRX__Parameters_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING EDRX__Parameters_default_coding("RAW");
const XERdescriptor_t       Time__Until__Next__Paging__Occasion_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Time__Until__Next__Paging__Occasion_iEI_oer_ext_arr_[0] = {};
const int Time__Until__Next__Paging__Occasion_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Time__Until__Next__Paging__Occasion_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Time__Until__Next__Paging__Occasion_iEI_oer_ext_arr_, 0, Time__Until__Next__Paging__Occasion_iEI_oer_p_};
const TTCN_Typedescriptor_t Time__Until__Next__Paging__Occasion_iEI_descr_ = { "@BSSGP_Types.Time_Until_Next_Paging_Occasion.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Time__Until__Next__Paging__Occasion_iEI_xer_, &OCTETSTRING_json_, &Time__Until__Next__Paging__Occasion_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__Until__Next__Paging__Occasion_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Time__Until__Next__Paging__Occasion_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Time__Until__Next__Paging__Occasion_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Time__Until__Next__Paging__Occasion_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Time__Until__Next__Paging__Occasion_ext_descr_ = { "@BSSGP_Types.Time_Until_Next_Paging_Occasion.ext", &BITSTRING_ber_, &Time__Until__Next__Paging__Occasion_ext_raw_, NULL, &Time__Until__Next__Paging__Occasion_ext_xer_, &BITSTRING_json_, &Time__Until__Next__Paging__Occasion_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__Until__Next__Paging__Occasion_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Time__Until__Next__Paging__Occasion_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Time__Until__Next__Paging__Occasion_lengthIndicator
const TTCN_Typedescriptor_t Time__Until__Next__Paging__Occasion_lengthIndicator_descr_ = { "@BSSGP_Types.Time_Until_Next_Paging_Occasion.lengthIndicator", NULL, &Time__Until__Next__Paging__Occasion_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__Until__Next__Paging__Occasion_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Time__Until__Next__Paging__Occasion_minutes_xer_ = { {"minutes>\n", "minutes>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Time__Until__Next__Paging__Occasion_minutes_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Time__Until__Next__Paging__Occasion_minutes_descr_ = { "@BSSGP_Types.Time_Until_Next_Paging_Occasion.minutes", &INTEGER_ber_, &General__Types::INT6b_raw_, &INTEGER_text_, &Time__Until__Next__Paging__Occasion_minutes_xer_, &INTEGER_json_, &Time__Until__Next__Paging__Occasion_minutes_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__Until__Next__Paging__Occasion_minutes_default_coding("RAW");
const XERdescriptor_t       Time__Until__Next__Paging__Occasion_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Time__Until__Next__Paging__Occasion_spare_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Time__Until__Next__Paging__Occasion_spare_descr_ = { "@BSSGP_Types.Time_Until_Next_Paging_Occasion.spare", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &Time__Until__Next__Paging__Occasion_spare_xer_, &BITSTRING_json_, &Time__Until__Next__Paging__Occasion_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__Until__Next__Paging__Occasion_spare_default_coding("RAW");
const XERdescriptor_t       Time__Until__Next__Paging__Occasion_seconds_xer_ = { {"seconds>\n", "seconds>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Time__Until__Next__Paging__Occasion_seconds_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Time__Until__Next__Paging__Occasion_seconds_descr_ = { "@BSSGP_Types.Time_Until_Next_Paging_Occasion.seconds", &INTEGER_ber_, &General__Types::INT6b_raw_, &INTEGER_text_, &Time__Until__Next__Paging__Occasion_seconds_xer_, &INTEGER_json_, &Time__Until__Next__Paging__Occasion_seconds_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__Until__Next__Paging__Occasion_seconds_default_coding("RAW");
const XERdescriptor_t       Time__Until__Next__Paging__Occasion_spare2_xer_ = { {"spare2>\n", "spare2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Time__Until__Next__Paging__Occasion_spare2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Time__Until__Next__Paging__Occasion_spare2_descr_ = { "@BSSGP_Types.Time_Until_Next_Paging_Occasion.spare2", &BITSTRING_ber_, &General__Types::BIT2_raw_, NULL, &Time__Until__Next__Paging__Occasion_spare2_xer_, &BITSTRING_json_, &Time__Until__Next__Paging__Occasion_spare2_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__Until__Next__Paging__Occasion_spare2_default_coding("RAW");
const TTCN_RAWdescriptor_t Time__Until__Next__Paging__Occasion_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Time__Until__Next__Paging__Occasion
const TTCN_Typedescriptor_t Time__Until__Next__Paging__Occasion_descr_ = { "@BSSGP_Types.Time_Until_Next_Paging_Occasion", NULL, &Time__Until__Next__Paging__Occasion_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Time__Until__Next__Paging__Occasion_default_coding("RAW");
const XERdescriptor_t       Old__Routing__Area__Identification_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Old__Routing__Area__Identification_iEI_oer_ext_arr_[0] = {};
const int Old__Routing__Area__Identification_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Old__Routing__Area__Identification_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Old__Routing__Area__Identification_iEI_oer_ext_arr_, 0, Old__Routing__Area__Identification_iEI_oer_p_};
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_iEI_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Old__Routing__Area__Identification_iEI_xer_, &OCTETSTRING_json_, &Old__Routing__Area__Identification_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Old__Routing__Area__Identification_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Old__Routing__Area__Identification_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Old__Routing__Area__Identification_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_ext_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.ext", &BITSTRING_ber_, &Old__Routing__Area__Identification_ext_raw_, NULL, &Old__Routing__Area__Identification_ext_xer_, &BITSTRING_json_, &Old__Routing__Area__Identification_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Old__Routing__Area__Identification_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Old__Routing__Area__Identification_lengthIndicator
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_lengthIndicator_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.lengthIndicator", NULL, &Old__Routing__Area__Identification_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Old__Routing__Area__Identification_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_mccDigit1_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Old__Routing__Area__Identification_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_mccDigit1_default_coding("RAW");
const XERdescriptor_t       Old__Routing__Area__Identification_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_mccDigit2_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Old__Routing__Area__Identification_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_mccDigit2_default_coding("RAW");
const XERdescriptor_t       Old__Routing__Area__Identification_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_mccDigit3_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Old__Routing__Area__Identification_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_mccDigit3_default_coding("RAW");
const XERdescriptor_t       Old__Routing__Area__Identification_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_mncDigit3_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &Old__Routing__Area__Identification_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_mncDigit3_default_coding("RAW");
const XERdescriptor_t       Old__Routing__Area__Identification_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_mncDigit1_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &Old__Routing__Area__Identification_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_mncDigit1_default_coding("RAW");
const XERdescriptor_t       Old__Routing__Area__Identification_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_mncDigit2_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &Old__Routing__Area__Identification_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_mncDigit2_default_coding("RAW");
const XERdescriptor_t       Old__Routing__Area__Identification_lac_xer_ = { {"lac>\n", "lac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Old__Routing__Area__Identification_lac_oer_ext_arr_[0] = {};
const int Old__Routing__Area__Identification_lac_oer_p_[0] = {};
const TTCN_OERdescriptor_t Old__Routing__Area__Identification_lac_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Old__Routing__Area__Identification_lac_oer_ext_arr_, 0, Old__Routing__Area__Identification_lac_oer_p_};
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_lac_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.lac", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Old__Routing__Area__Identification_lac_xer_, &OCTETSTRING_json_, &Old__Routing__Area__Identification_lac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_lac_default_coding("RAW");
const XERdescriptor_t       Old__Routing__Area__Identification_rac_xer_ = { {"rac>\n", "rac>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Old__Routing__Area__Identification_rac_oer_ext_arr_[0] = {};
const int Old__Routing__Area__Identification_rac_oer_p_[0] = {};
const TTCN_OERdescriptor_t Old__Routing__Area__Identification_rac_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Old__Routing__Area__Identification_rac_oer_ext_arr_, 0, Old__Routing__Area__Identification_rac_oer_p_};
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_rac_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification.rac", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Old__Routing__Area__Identification_rac_xer_, &OCTETSTRING_json_, &Old__Routing__Area__Identification_rac_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_rac_default_coding("RAW");
const TTCN_RAWdescriptor_t Old__Routing__Area__Identification_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Old__Routing__Area__Identification
const TTCN_Typedescriptor_t Old__Routing__Area__Identification_descr_ = { "@BSSGP_Types.Old_Routing_Area_Identification", NULL, &Old__Routing__Area__Identification_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Old__Routing__Area__Identification_default_coding("RAW");
const XERdescriptor_t       Attach__Indicator_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Attach__Indicator_iEI_oer_ext_arr_[0] = {};
const int Attach__Indicator_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t Attach__Indicator_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Attach__Indicator_iEI_oer_ext_arr_, 0, Attach__Indicator_iEI_oer_p_};
const TTCN_Typedescriptor_t Attach__Indicator_iEI_descr_ = { "@BSSGP_Types.Attach_Indicator.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Attach__Indicator_iEI_xer_, &OCTETSTRING_json_, &Attach__Indicator_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Attach__Indicator_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t Attach__Indicator_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       Attach__Indicator_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t Attach__Indicator_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t Attach__Indicator_ext_descr_ = { "@BSSGP_Types.Attach_Indicator.ext", &BITSTRING_ber_, &Attach__Indicator_ext_raw_, NULL, &Attach__Indicator_ext_xer_, &BITSTRING_json_, &Attach__Indicator_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Attach__Indicator_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t Attach__Indicator_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Attach__Indicator_lengthIndicator
const TTCN_Typedescriptor_t Attach__Indicator_lengthIndicator_descr_ = { "@BSSGP_Types.Attach_Indicator.lengthIndicator", NULL, &Attach__Indicator_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Attach__Indicator_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       Attach__Indicator_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int Attach__Indicator_spare_oer_ext_arr_[0] = {};
const int Attach__Indicator_spare_oer_p_[0] = {};
const TTCN_OERdescriptor_t Attach__Indicator_spare_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Attach__Indicator_spare_oer_ext_arr_, 0, Attach__Indicator_spare_oer_p_};
const TTCN_Typedescriptor_t Attach__Indicator_spare_descr_ = { "@BSSGP_Types.Attach_Indicator.spare", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Attach__Indicator_spare_xer_, &OCTETSTRING_json_, &Attach__Indicator_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Attach__Indicator_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t Attach__Indicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Attach__Indicator
const TTCN_Typedescriptor_t Attach__Indicator_descr_ = { "@BSSGP_Types.Attach_Indicator", NULL, &Attach__Indicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Attach__Indicator_default_coding("RAW");
const XERdescriptor_t       PLMN__Identity_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PLMN__Identity_iEI_oer_ext_arr_[0] = {};
const int PLMN__Identity_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t PLMN__Identity_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PLMN__Identity_iEI_oer_ext_arr_, 0, PLMN__Identity_iEI_oer_p_};
const TTCN_Typedescriptor_t PLMN__Identity_iEI_descr_ = { "@BSSGP_Types.PLMN_Identity.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PLMN__Identity_iEI_xer_, &OCTETSTRING_json_, &PLMN__Identity_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PLMN__Identity_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t PLMN__Identity_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       PLMN__Identity_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t PLMN__Identity_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t PLMN__Identity_ext_descr_ = { "@BSSGP_Types.PLMN_Identity.ext", &BITSTRING_ber_, &PLMN__Identity_ext_raw_, NULL, &PLMN__Identity_ext_xer_, &BITSTRING_json_, &PLMN__Identity_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PLMN__Identity_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t PLMN__Identity_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PLMN__Identity_lengthIndicator
const TTCN_Typedescriptor_t PLMN__Identity_lengthIndicator_descr_ = { "@BSSGP_Types.PLMN_Identity.lengthIndicator", NULL, &PLMN__Identity_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PLMN__Identity_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       PLMN__Identity_mccDigit1_xer_ = { {"mccDigit1>\n", "mccDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t PLMN__Identity_mccDigit1_descr_ = { "@BSSGP_Types.PLMN_Identity.mccDigit1", NULL, &General__Types::HEX1_raw_, NULL, &PLMN__Identity_mccDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PLMN__Identity_mccDigit1_default_coding("RAW");
const XERdescriptor_t       PLMN__Identity_mccDigit2_xer_ = { {"mccDigit2>\n", "mccDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t PLMN__Identity_mccDigit2_descr_ = { "@BSSGP_Types.PLMN_Identity.mccDigit2", NULL, &General__Types::HEX1_raw_, NULL, &PLMN__Identity_mccDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PLMN__Identity_mccDigit2_default_coding("RAW");
const XERdescriptor_t       PLMN__Identity_mccDigit3_xer_ = { {"mccDigit3>\n", "mccDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t PLMN__Identity_mccDigit3_descr_ = { "@BSSGP_Types.PLMN_Identity.mccDigit3", NULL, &General__Types::HEX1_raw_, NULL, &PLMN__Identity_mccDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PLMN__Identity_mccDigit3_default_coding("RAW");
const XERdescriptor_t       PLMN__Identity_mncDigit3_xer_ = { {"mncDigit3>\n", "mncDigit3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t PLMN__Identity_mncDigit3_descr_ = { "@BSSGP_Types.PLMN_Identity.mncDigit3", NULL, &General__Types::HEX1_raw_, NULL, &PLMN__Identity_mncDigit3_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PLMN__Identity_mncDigit3_default_coding("RAW");
const XERdescriptor_t       PLMN__Identity_mncDigit1_xer_ = { {"mncDigit1>\n", "mncDigit1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t PLMN__Identity_mncDigit1_descr_ = { "@BSSGP_Types.PLMN_Identity.mncDigit1", NULL, &General__Types::HEX1_raw_, NULL, &PLMN__Identity_mncDigit1_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PLMN__Identity_mncDigit1_default_coding("RAW");
const XERdescriptor_t       PLMN__Identity_mncDigit2_xer_ = { {"mncDigit2>\n", "mncDigit2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_Typedescriptor_t PLMN__Identity_mncDigit2_descr_ = { "@BSSGP_Types.PLMN_Identity.mncDigit2", NULL, &General__Types::HEX1_raw_, NULL, &PLMN__Identity_mncDigit2_xer_, &HEXSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PLMN__Identity_mncDigit2_default_coding("RAW");
const TTCN_RAWdescriptor_t PLMN__Identity_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PLMN__Identity
const TTCN_Typedescriptor_t PLMN__Identity_descr_ = { "@BSSGP_Types.PLMN_Identity", NULL, &PLMN__Identity_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PLMN__Identity_default_coding("RAW");
const XERdescriptor_t       MME__Query_iEI_xer_ = { {"iEI>\n", "iEI>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MME__Query_iEI_oer_ext_arr_[0] = {};
const int MME__Query_iEI_oer_p_[0] = {};
const TTCN_OERdescriptor_t MME__Query_iEI_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MME__Query_iEI_oer_ext_arr_, 0, MME__Query_iEI_oer_p_};
const TTCN_Typedescriptor_t MME__Query_iEI_descr_ = { "@BSSGP_Types.MME_Query.iEI", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MME__Query_iEI_xer_, &OCTETSTRING_json_, &MME__Query_iEI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MME__Query_iEI_default_coding("RAW");
const TTCN_RAWdescriptor_t MME__Query_ext_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
const XERdescriptor_t       MME__Query_ext_xer_ = { {"ext>\n", "ext>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const TTCN_OERdescriptor_t MME__Query_ext_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
const TTCN_Typedescriptor_t MME__Query_ext_descr_ = { "@BSSGP_Types.MME_Query.ext", &BITSTRING_ber_, &MME__Query_ext_raw_, NULL, &MME__Query_ext_xer_, &BITSTRING_json_, &MME__Query_ext_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MME__Query_ext_default_coding("RAW");
const TTCN_RAWdescriptor_t MME__Query_lengthIndicator_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MME__Query_lengthIndicator
const TTCN_Typedescriptor_t MME__Query_lengthIndicator_descr_ = { "@BSSGP_Types.MME_Query.lengthIndicator", NULL, &MME__Query_lengthIndicator_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MME__Query_lengthIndicator_default_coding("RAW");
const XERdescriptor_t       MME__Query_spare_xer_ = { {"spare>\n", "spare>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int MME__Query_spare_oer_ext_arr_[0] = {};
const int MME__Query_spare_oer_p_[0] = {};
const TTCN_OERdescriptor_t MME__Query_spare_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MME__Query_spare_oer_ext_arr_, 0, MME__Query_spare_oer_p_};
const TTCN_Typedescriptor_t MME__Query_spare_descr_ = { "@BSSGP_Types.MME_Query.spare", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &MME__Query_spare_xer_, &OCTETSTRING_json_, &MME__Query_spare_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MME__Query_spare_default_coding("RAW");
const TTCN_RAWdescriptor_t MME__Query_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for MME__Query
const TTCN_Typedescriptor_t MME__Query_descr_ = { "@BSSGP_Types.MME_Query", NULL, &MME__Query_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING MME__Query_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__DL__UNITDATA_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__DL__UNITDATA_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__DL__UNITDATA_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__DL__UNITDATA_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__DL__UNITDATA_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__DL__UNITDATA_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__DL__UNITDATA_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_DL_UNITDATA.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__DL__UNITDATA_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__DL__UNITDATA_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_bssgpPduType_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__DL__UNITDATA_tLLI__current_xer_ = { {"tLLI_current>\n", "tLLI_current>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__DL__UNITDATA_tLLI__current_oer_ext_arr_[0] = {};
const int PDU__BSSGP__DL__UNITDATA_tLLI__current_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__DL__UNITDATA_tLLI__current_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PDU__BSSGP__DL__UNITDATA_tLLI__current_oer_ext_arr_, 0, PDU__BSSGP__DL__UNITDATA_tLLI__current_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__DL__UNITDATA_tLLI__current_descr_ = { "@BSSGP_Types.PDU_BSSGP_DL_UNITDATA.tLLI_current", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &PDU__BSSGP__DL__UNITDATA_tLLI__current_xer_, &OCTETSTRING_json_, &PDU__BSSGP__DL__UNITDATA_tLLI__current_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_tLLI__current_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_qoS__Profile_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_pDU__Lifetime_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_lLC__PDU_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__DL__UNITDATA_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__DL__UNITDATA
const TTCN_Typedescriptor_t PDU__BSSGP__DL__UNITDATA_descr_ = { "@BSSGP_Types.PDU_BSSGP_DL_UNITDATA", NULL, &PDU__BSSGP__DL__UNITDATA_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_mS__Radio__Access__Capability_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_priority_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_dRX__Parameters_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_iMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_tLLI__old_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_lSA__Information_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_service__UTRAN__CCO_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_service__Class__Indicator_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_subscriber__Profile__ID__For__RAT__Priority_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_redirection__Indication_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_redirection__Completed_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_unconfirmed__Send__State__Variable_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_sCI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_gGSN__PGW__Location_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_eDRX__Paremeters_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_old__Routing__Area__Identification_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_attach__Indicator_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_alignment__octets_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_initialLLC__PDU_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__UNITDATA_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__UL__UNITDATA_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__UL__UNITDATA_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__UL__UNITDATA_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__UL__UNITDATA_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__UL__UNITDATA_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__UL__UNITDATA_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__UL__UNITDATA_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_UL_UNITDATA.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__UL__UNITDATA_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__UL__UNITDATA_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_bssgpPduType_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__UL__UNITDATA_tLLI_xer_ = { {"tLLI>\n", "tLLI>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__UL__UNITDATA_tLLI_oer_ext_arr_[0] = {};
const int PDU__BSSGP__UL__UNITDATA_tLLI_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__UL__UNITDATA_tLLI_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PDU__BSSGP__UL__UNITDATA_tLLI_oer_ext_arr_, 0, PDU__BSSGP__UL__UNITDATA_tLLI_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__UL__UNITDATA_tLLI_descr_ = { "@BSSGP_Types.PDU_BSSGP_UL_UNITDATA.tLLI", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &PDU__BSSGP__UL__UNITDATA_tLLI_xer_, &OCTETSTRING_json_, &PDU__BSSGP__UL__UNITDATA_tLLI_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_qoS__Profile_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_lLC__PDU_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__UL__UNITDATA_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__UL__UNITDATA
const TTCN_Typedescriptor_t PDU__BSSGP__UL__UNITDATA_descr_ = { "@BSSGP_Types.PDU_BSSGP_UL_UNITDATA", NULL, &PDU__BSSGP__UL__UNITDATA_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_lSA__Identifier__List_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_redirect__Attempt__Flag_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_iMSI__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_unconfirmed__Send__State__Variable_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_selected__PLMN__ID_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_selected__Operator_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_cS__Registered__Operator_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_alignment__octets_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__UNITDATA_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RA__CAPABILITY_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RA__CAPABILITY_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RA__CAPABILITY_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RA__CAPABILITY_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RA__CAPABILITY_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RA__CAPABILITY_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RA__CAPABILITY_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RA_CAPABILITY.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RA__CAPABILITY_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RA__CAPABILITY_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY_mS__Radio__Access__Capability_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RA__CAPABILITY_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RA__CAPABILITY
const TTCN_Typedescriptor_t PDU__BSSGP__RA__CAPABILITY_descr_ = { "@BSSGP_Types.PDU_BSSGP_RA_CAPABILITY", NULL, &PDU__BSSGP__RA__CAPABILITY_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__DL__MBMS__UNITDATA_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__DL__MBMS__UNITDATA_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__DL__MBMS__UNITDATA_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__DL__MBMS__UNITDATA_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__DL__MBMS__UNITDATA_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__DL__MBMS__UNITDATA_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__DL__MBMS__UNITDATA_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_DL_MBMS_UNITDATA.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__DL__MBMS__UNITDATA_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__DL__MBMS__UNITDATA_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__MBMS__UNITDATA_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__MBMS__UNITDATA_pDU__Lifetime_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__MBMS__UNITDATA_tMGI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__MBMS__UNITDATA_lLC__PDU_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__DL__MBMS__UNITDATA_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__DL__MBMS__UNITDATA
const TTCN_Typedescriptor_t PDU__BSSGP__DL__MBMS__UNITDATA_descr_ = { "@BSSGP_Types.PDU_BSSGP_DL_MBMS_UNITDATA", NULL, &PDU__BSSGP__DL__MBMS__UNITDATA_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__MBMS__UNITDATA_mBMS__Session__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__MBMS__UNITDATA_alignment__octets_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DL__MBMS__UNITDATA_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__UL__MBMS__UNITDATA_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__UL__MBMS__UNITDATA_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__UL__MBMS__UNITDATA_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__UL__MBMS__UNITDATA_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__UL__MBMS__UNITDATA_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__UL__MBMS__UNITDATA_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__UL__MBMS__UNITDATA_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_UL_MBMS_UNITDATA.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__UL__MBMS__UNITDATA_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__UL__MBMS__UNITDATA_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__MBMS__UNITDATA_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__MBMS__UNITDATA_tMGI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__MBMS__UNITDATA_lLC__PDU_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__UL__MBMS__UNITDATA_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__UL__MBMS__UNITDATA
const TTCN_Typedescriptor_t PDU__BSSGP__UL__MBMS__UNITDATA_descr_ = { "@BSSGP_Types.PDU_BSSGP_UL_MBMS_UNITDATA", NULL, &PDU__BSSGP__UL__MBMS__UNITDATA_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__MBMS__UNITDATA_mBMS__Session__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__MBMS__UNITDATA_alignment__octets_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__UL__MBMS__UNITDATA_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PAGING__PS_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PAGING__PS_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PAGING__PS_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PAGING__PS_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PAGING__PS_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PAGING__PS_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PAGING__PS_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PAGING_PS.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PAGING__PS_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PAGING__PS_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS_iMSI_default_coding("RAW");
const TTCN_RAWdescriptor_t Paging__Field4_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for Paging__Field4
const TTCN_Typedescriptor_t Paging__Field4_descr_ = { "@BSSGP_Types.Paging_Field4", NULL, &Paging__Field4_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING Paging__Field4_bVCI_default_coding("RAW");
UNIVERSAL_CHARSTRING Paging__Field4_location__Area_default_coding("RAW");
UNIVERSAL_CHARSTRING Paging__Field4_routeing__Area_default_coding("RAW");
UNIVERSAL_CHARSTRING Paging__Field4_bSS__Area__Indication_default_coding("RAW");
UNIVERSAL_CHARSTRING Paging__Field4_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS_paging__Field4_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS_qoS__Profile_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PAGING__PS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PAGING__PS
const TTCN_Typedescriptor_t PDU__BSSGP__PAGING__PS_descr_ = { "@BSSGP_Types.PDU_BSSGP_PAGING_PS", NULL, &PDU__BSSGP__PAGING__PS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS_dRX__Parameters_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS_aBQP_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS_pTMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS_eDRX__Paremeters_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PAGING__CS_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PAGING__CS_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PAGING__CS_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PAGING__CS_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PAGING__CS_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PAGING__CS_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PAGING__CS_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PAGING_CS.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PAGING__CS_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PAGING__CS_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__CS_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__CS_iMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__CS_dRX__Parameters_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__CS_paging__Field4_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PAGING__CS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PAGING__CS
const TTCN_Typedescriptor_t PDU__BSSGP__PAGING__CS_descr_ = { "@BSSGP_Types.PDU_BSSGP_PAGING_CS", NULL, &PDU__BSSGP__PAGING__CS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__CS_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__CS_channel__needed_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__CS_eMLPP__Priority_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__CS_tMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__CS_global__CN__Id_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__CS_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RA__CAPABILITY__UPDATE_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RA__CAPABILITY__UPDATE_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RA__CAPABILITY__UPDATE_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RA__CAPABILITY__UPDATE_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RA__CAPABILITY__UPDATE_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RA__CAPABILITY__UPDATE_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RA__CAPABILITY__UPDATE_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RA_CAPABILITY_UPDATE.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RA__CAPABILITY__UPDATE_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RA__CAPABILITY__UPDATE_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RA__CAPABILITY__UPDATE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RA__CAPABILITY__UPDATE
const TTCN_Typedescriptor_t PDU__BSSGP__RA__CAPABILITY__UPDATE_descr_ = { "@BSSGP_Types.PDU_BSSGP_RA_CAPABILITY_UPDATE", NULL, &PDU__BSSGP__RA__CAPABILITY__UPDATE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RA_CAPABILITY_UPDATE_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_tag_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_rA__Cap__UPDATE__CAUSE_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_RA_CAPABILITY_UPDATE_ACK", NULL, &PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_iMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_mS__Radio__Access__Capability_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RADIO__STATUS_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RADIO__STATUS_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RADIO__STATUS_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RADIO__STATUS_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RADIO__STATUS_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RADIO__STATUS_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RADIO__STATUS_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RADIO_STATUS.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RADIO__STATUS_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RADIO__STATUS_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RADIO__STATUS_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RADIO__STATUS_radio__Cause_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RADIO__STATUS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RADIO__STATUS
const TTCN_Typedescriptor_t PDU__BSSGP__RADIO__STATUS_descr_ = { "@BSSGP_Types.PDU_BSSGP_RADIO_STATUS", NULL, &PDU__BSSGP__RADIO__STATUS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RADIO__STATUS_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RADIO__STATUS_tMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RADIO__STATUS_iMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RADIO__STATUS_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__SUSPEND_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__SUSPEND_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__SUSPEND_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__SUSPEND_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__SUSPEND_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__SUSPEND_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__SUSPEND_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_SUSPEND.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__SUSPEND_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__SUSPEND_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND_routeing__Area_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__SUSPEND_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__SUSPEND
const TTCN_Typedescriptor_t PDU__BSSGP__SUSPEND_descr_ = { "@BSSGP_Types.PDU_BSSGP_SUSPEND", NULL, &PDU__BSSGP__SUSPEND_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__SUSPEND__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__SUSPEND__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__SUSPEND__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__SUSPEND__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__SUSPEND__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__SUSPEND__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__SUSPEND__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_SUSPEND_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__SUSPEND__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__SUSPEND__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND__ACK_routeing__Area_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND__ACK_suspend__Reference__Number_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__SUSPEND__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__SUSPEND__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__SUSPEND__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_SUSPEND_ACK", NULL, &PDU__BSSGP__SUSPEND__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__SUSPEND__NACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__SUSPEND__NACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__SUSPEND__NACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__SUSPEND__NACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__SUSPEND__NACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__SUSPEND__NACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__SUSPEND__NACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_SUSPEND_NACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__SUSPEND__NACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__SUSPEND__NACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND__NACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND__NACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND__NACK_routeing__Area_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__SUSPEND__NACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__SUSPEND__NACK
const TTCN_Typedescriptor_t PDU__BSSGP__SUSPEND__NACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_SUSPEND_NACK", NULL, &PDU__BSSGP__SUSPEND__NACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND__NACK_cause_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SUSPEND__NACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RESUME_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RESUME_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RESUME_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RESUME_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RESUME_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RESUME_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RESUME_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RESUME.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RESUME_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RESUME_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME_routeing__Area_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME_suspend__Reference__Number_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RESUME_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RESUME
const TTCN_Typedescriptor_t PDU__BSSGP__RESUME_descr_ = { "@BSSGP_Types.PDU_BSSGP_RESUME", NULL, &PDU__BSSGP__RESUME_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RESUME__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RESUME__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RESUME__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RESUME__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RESUME__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RESUME__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RESUME__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RESUME_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RESUME__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RESUME__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME__ACK_routeing__Area_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RESUME__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RESUME__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__RESUME__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_RESUME_ACK", NULL, &PDU__BSSGP__RESUME__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RESUME__NACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RESUME__NACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RESUME__NACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RESUME__NACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RESUME__NACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RESUME__NACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RESUME__NACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RESUME_NACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RESUME__NACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RESUME__NACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME__NACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME__NACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME__NACK_routeing__Area_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RESUME__NACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RESUME__NACK
const TTCN_Typedescriptor_t PDU__BSSGP__RESUME__NACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_RESUME_NACK", NULL, &PDU__BSSGP__RESUME__NACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME__NACK_cause_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RESUME__NACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PAGING__PS__REJECT_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PAGING__PS__REJECT_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PAGING__PS__REJECT_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PAGING__PS__REJECT_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PAGING__PS__REJECT_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PAGING__PS__REJECT_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PAGING__PS__REJECT_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PAGING_PS_REJECT.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PAGING__PS__REJECT_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PAGING__PS__REJECT_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS__REJECT_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS__REJECT_iMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS__REJECT_time__Until__Next__Paging__Occasion_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PAGING__PS__REJECT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PAGING__PS__REJECT
const TTCN_Typedescriptor_t PDU__BSSGP__PAGING__PS__REJECT_descr_ = { "@BSSGP_Types.PDU_BSSGP_PAGING_PS_REJECT", NULL, &PDU__BSSGP__PAGING__PS__REJECT_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS__REJECT_pTMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PAGING__PS__REJECT_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__DUMMY__PAGING__PS_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__DUMMY__PAGING__PS_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__DUMMY__PAGING__PS_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__DUMMY__PAGING__PS_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__DUMMY__PAGING__PS_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__DUMMY__PAGING__PS_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__DUMMY__PAGING__PS_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_DUMMY_PAGING_PS.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__DUMMY__PAGING__PS_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__DUMMY__PAGING__PS_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DUMMY__PAGING__PS_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DUMMY__PAGING__PS_iMSI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__DUMMY__PAGING__PS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__DUMMY__PAGING__PS
const TTCN_Typedescriptor_t PDU__BSSGP__DUMMY__PAGING__PS_descr_ = { "@BSSGP_Types.PDU_BSSGP_DUMMY_PAGING_PS", NULL, &PDU__BSSGP__DUMMY__PAGING__PS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DUMMY__PAGING__PS_routeing__Area_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DUMMY__PAGING__PS_eDRX__Paremeters_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DUMMY__PAGING__PS_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_DUMMY_PAGING_PS_RESPONSE.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_iMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_time__Until__Next__Paging__Occasion_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE
const TTCN_Typedescriptor_t PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_descr_ = { "@BSSGP_Types.PDU_BSSGP_DUMMY_PAGING_PS_RESPONSE", NULL, &PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_MS_REGISTRATION_ENQUIRY_RESPONSE.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_iMSI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE
const TTCN_Typedescriptor_t PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_descr_ = { "@BSSGP_Types.PDU_BSSGP_MS_REGISTRATION_ENQUIRY_RESPONSE", NULL, &PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_pS__Registered__Operator_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__MS__REGISTRATION__ENQUIRY_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__MS__REGISTRATION__ENQUIRY_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__MS__REGISTRATION__ENQUIRY_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__MS__REGISTRATION__ENQUIRY_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__MS__REGISTRATION__ENQUIRY_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__MS__REGISTRATION__ENQUIRY_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__MS__REGISTRATION__ENQUIRY_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_MS_REGISTRATION_ENQUIRY.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__MS__REGISTRATION__ENQUIRY_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__MS__REGISTRATION__ENQUIRY_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MS__REGISTRATION__ENQUIRY_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MS__REGISTRATION__ENQUIRY_iMSI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__MS__REGISTRATION__ENQUIRY_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__MS__REGISTRATION__ENQUIRY
const TTCN_Typedescriptor_t PDU__BSSGP__MS__REGISTRATION__ENQUIRY_descr_ = { "@BSSGP_Types.PDU_BSSGP_MS_REGISTRATION_ENQUIRY", NULL, &PDU__BSSGP__MS__REGISTRATION__ENQUIRY_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MS__REGISTRATION__ENQUIRY_mME__Query_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MS__REGISTRATION__ENQUIRY_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__FLUSH__LL_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__FLUSH__LL_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__FLUSH__LL_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__FLUSH__LL_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__FLUSH__LL_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__FLUSH__LL_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__FLUSH__LL_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLUSH_LL.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__FLUSH__LL_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__FLUSH__LL_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL_bVCI__old_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__FLUSH__LL_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__FLUSH__LL
const TTCN_Typedescriptor_t PDU__BSSGP__FLUSH__LL_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLUSH_LL", NULL, &PDU__BSSGP__FLUSH__LL_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL_bVCI__new_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL_nSEI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__FLUSH__LL__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__FLUSH__LL__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__FLUSH__LL__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__FLUSH__LL__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__FLUSH__LL__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__FLUSH__LL__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__FLUSH__LL__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLUSH_LL_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__FLUSH__LL__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__FLUSH__LL__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL__ACK_flush__Action_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL__ACK_number__of__octets__affected_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__FLUSH__LL__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__FLUSH__LL__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__FLUSH__LL__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLUSH_LL_ACK", NULL, &PDU__BSSGP__FLUSH__LL__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL__ACK_bVCI__new_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL__ACK_nSEI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLUSH__LL__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__LLC__DISCARDED_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__LLC__DISCARDED_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__LLC__DISCARDED_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__LLC__DISCARDED_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__LLC__DISCARDED_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__LLC__DISCARDED_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__LLC__DISCARDED_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_LLC_DISCARDED.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__LLC__DISCARDED_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__LLC__DISCARDED_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__LLC__DISCARDED_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__LLC__DISCARDED_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__LLC__DISCARDED_lLC__Frames__Discarded_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__LLC__DISCARDED_bVCI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__LLC__DISCARDED_number__of__octets__deleted_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__LLC__DISCARDED_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__LLC__DISCARDED
const TTCN_Typedescriptor_t PDU__BSSGP__LLC__DISCARDED_descr_ = { "@BSSGP_Types.PDU_BSSGP_LLC_DISCARDED", NULL, &PDU__BSSGP__LLC__DISCARDED_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__LLC__DISCARDED_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__LLC__DISCARDED_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__FLOW__CONTROL__BVC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__FLOW__CONTROL__BVC_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__FLOW__CONTROL__BVC_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__FLOW__CONTROL__BVC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__FLOW__CONTROL__BVC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__FLOW__CONTROL__BVC_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__BVC_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_BVC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__FLOW__CONTROL__BVC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__FLOW__CONTROL__BVC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC_tag_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC_bVC__Bucket__Size_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC_bucket__Leak__Rate_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC_bmax__default__MS_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC_r__default__MS_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__FLOW__CONTROL__BVC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__FLOW__CONTROL__BVC
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__BVC_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_BVC", NULL, &PDU__BSSGP__FLOW__CONTROL__BVC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC_bucket__Full__Ratio_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC_bVC__Measurement_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC_flow__Control__Granularity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__FLOW__CONTROL__BVC__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__FLOW__CONTROL__BVC__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__FLOW__CONTROL__BVC__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__FLOW__CONTROL__BVC__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__FLOW__CONTROL__BVC__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__FLOW__CONTROL__BVC__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__BVC__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_BVC_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__FLOW__CONTROL__BVC__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__FLOW__CONTROL__BVC__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC__ACK_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__FLOW__CONTROL__BVC__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__FLOW__CONTROL__BVC__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__BVC__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_BVC_ACK", NULL, &PDU__BSSGP__FLOW__CONTROL__BVC__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__BVC__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__FLOW__CONTROL__MS_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__FLOW__CONTROL__MS_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__FLOW__CONTROL__MS_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__FLOW__CONTROL__MS_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__FLOW__CONTROL__MS_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__FLOW__CONTROL__MS_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__MS_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_MS.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__FLOW__CONTROL__MS_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__FLOW__CONTROL__MS_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS_tag_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS_mS__Bucket__Size_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS_bucket__Leak__Rate_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__FLOW__CONTROL__MS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__FLOW__CONTROL__MS
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__MS_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_MS", NULL, &PDU__BSSGP__FLOW__CONTROL__MS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS_bucket__Full__Ratio_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS_flow__Control__Granularity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__FLOW__CONTROL__MS__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__FLOW__CONTROL__MS__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__FLOW__CONTROL__MS__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__FLOW__CONTROL__MS__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__FLOW__CONTROL__MS__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__FLOW__CONTROL__MS__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__MS__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_MS_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__FLOW__CONTROL__MS__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__FLOW__CONTROL__MS__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS__ACK_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__FLOW__CONTROL__MS__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__FLOW__CONTROL__MS__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__MS__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_MS_ACK", NULL, &PDU__BSSGP__FLOW__CONTROL__MS__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__MS__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__BVC__BLOCK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__BVC__BLOCK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__BVC__BLOCK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__BVC__BLOCK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__BVC__BLOCK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__BVC__BLOCK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__BLOCK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_BLOCK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__BVC__BLOCK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__BVC__BLOCK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__BLOCK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__BLOCK_bVCI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__BLOCK_cause_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__BVC__BLOCK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__BVC__BLOCK
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__BLOCK_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_BLOCK", NULL, &PDU__BSSGP__BVC__BLOCK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__BLOCK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__BVC__BLOCK__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__BVC__BLOCK__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__BVC__BLOCK__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__BVC__BLOCK__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__BVC__BLOCK__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__BVC__BLOCK__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__BLOCK__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_BLOCK_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__BVC__BLOCK__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__BVC__BLOCK__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__BLOCK__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__BLOCK__ACK_bVCI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__BVC__BLOCK__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__BVC__BLOCK__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__BLOCK__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_BLOCK_ACK", NULL, &PDU__BSSGP__BVC__BLOCK__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__BLOCK__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__BVC__UNBLOCK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__BVC__UNBLOCK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__BVC__UNBLOCK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__BVC__UNBLOCK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__BVC__UNBLOCK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__BVC__UNBLOCK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__UNBLOCK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_UNBLOCK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__BVC__UNBLOCK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__BVC__UNBLOCK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__UNBLOCK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__UNBLOCK_bVCI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__BVC__UNBLOCK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__BVC__UNBLOCK
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__UNBLOCK_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_UNBLOCK", NULL, &PDU__BSSGP__BVC__UNBLOCK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__UNBLOCK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__BVC__UNBLOCK__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__BVC__UNBLOCK__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__BVC__UNBLOCK__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__BVC__UNBLOCK__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__BVC__UNBLOCK__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__BVC__UNBLOCK__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__UNBLOCK__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_UNBLOCK_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__BVC__UNBLOCK__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__BVC__UNBLOCK__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__UNBLOCK__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__UNBLOCK__ACK_bVCI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__BVC__UNBLOCK__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__BVC__UNBLOCK__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__UNBLOCK__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_UNBLOCK_ACK", NULL, &PDU__BSSGP__BVC__UNBLOCK__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__UNBLOCK__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__BVC__RESET_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__BVC__RESET_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__BVC__RESET_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__BVC__RESET_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__BVC__RESET_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__BVC__RESET_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__RESET_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_RESET.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__BVC__RESET_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__BVC__RESET_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET_bVCI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET_cause_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__BVC__RESET_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__BVC__RESET
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__RESET_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_RESET", NULL, &PDU__BSSGP__BVC__RESET_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET_cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET_feature__bitmap_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET_extended__Feature__Bitmap_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__BVC__RESET__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__BVC__RESET__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__BVC__RESET__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__BVC__RESET__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__BVC__RESET__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__BVC__RESET__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__RESET__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_RESET_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__BVC__RESET__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__BVC__RESET__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET__ACK_bVCI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__BVC__RESET__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__BVC__RESET__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__BVC__RESET__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_BVC_RESET_ACK", NULL, &PDU__BSSGP__BVC__RESET__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET__ACK_cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET__ACK_feature__bitmap_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET__ACK_extended__Feature__Bitmap_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__BVC__RESET__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__STATUS_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__STATUS_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__STATUS_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__STATUS_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__STATUS_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__STATUS_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__STATUS_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_STATUS.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__STATUS_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__STATUS_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__STATUS_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__STATUS_cause_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__STATUS_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__STATUS
const TTCN_Typedescriptor_t PDU__BSSGP__STATUS_descr_ = { "@BSSGP_Types.PDU_BSSGP_STATUS", NULL, &PDU__BSSGP__STATUS_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__STATUS_bVCI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__STATUS_pDU__in__Error_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__STATUS_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__SGSN__INVOKE__TRACE_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__SGSN__INVOKE__TRACE_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__SGSN__INVOKE__TRACE_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__SGSN__INVOKE__TRACE_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__SGSN__INVOKE__TRACE_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__SGSN__INVOKE__TRACE_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__SGSN__INVOKE__TRACE_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_SGSN_INVOKE_TRACE.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__SGSN__INVOKE__TRACE_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__SGSN__INVOKE__TRACE_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SGSN__INVOKE__TRACE_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SGSN__INVOKE__TRACE_traceType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SGSN__INVOKE__TRACE_traceReference_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__SGSN__INVOKE__TRACE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__SGSN__INVOKE__TRACE
const TTCN_Typedescriptor_t PDU__BSSGP__SGSN__INVOKE__TRACE_descr_ = { "@BSSGP_Types.PDU_BSSGP_SGSN_INVOKE_TRACE", NULL, &PDU__BSSGP__SGSN__INVOKE__TRACE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SGSN__INVOKE__TRACE_triggerId_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SGSN__INVOKE__TRACE_mobileId_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SGSN__INVOKE__TRACE_omcId_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SGSN__INVOKE__TRACE_transactionId_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SGSN__INVOKE__TRACE_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__DOWNLOAD__BSS__PFC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__DOWNLOAD__BSS__PFC_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__DOWNLOAD__BSS__PFC_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__DOWNLOAD__BSS__PFC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__DOWNLOAD__BSS__PFC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__DOWNLOAD__BSS__PFC_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__DOWNLOAD__BSS__PFC_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_DOWNLOAD_BSS_PFC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__DOWNLOAD__BSS__PFC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__DOWNLOAD__BSS__PFC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DOWNLOAD__BSS__PFC_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DOWNLOAD__BSS__PFC_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DOWNLOAD__BSS__PFC_pFI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__DOWNLOAD__BSS__PFC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__DOWNLOAD__BSS__PFC
const TTCN_Typedescriptor_t PDU__BSSGP__DOWNLOAD__BSS__PFC_descr_ = { "@BSSGP_Types.PDU_BSSGP_DOWNLOAD_BSS_PFC", NULL, &PDU__BSSGP__DOWNLOAD__BSS__PFC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DOWNLOAD__BSS__PFC_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__CREATE__BSS__PFC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__CREATE__BSS__PFC_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__CREATE__BSS__PFC_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__CREATE__BSS__PFC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__CREATE__BSS__PFC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__CREATE__BSS__PFC_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__CREATE__BSS__PFC_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_CREATE_BSS_PFC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__CREATE__BSS__PFC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__CREATE__BSS__PFC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_pFT_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_aBQP_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__CREATE__BSS__PFC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__CREATE__BSS__PFC
const TTCN_Typedescriptor_t PDU__BSSGP__CREATE__BSS__PFC_descr_ = { "@BSSGP_Types.PDU_BSSGP_CREATE_BSS_PFC", NULL, &PDU__BSSGP__CREATE__BSS__PFC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_iMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_service__UTRAN__CCO_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_mS__Radio__Access__Capability_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_allocation__Retention__Priority_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_t10_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_inter__RAT__Handover__Info_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_e__UTRAN__Inter__RAT__Handover__Info_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_subscriber__Profile__ID__For__RAT_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__CREATE__BSS__PFC__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__CREATE__BSS__PFC__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__CREATE__BSS__PFC__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__CREATE__BSS__PFC__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__CREATE__BSS__PFC__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__CREATE__BSS__PFC__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__CREATE__BSS__PFC__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_CREATE_BSS_PFC_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__CREATE__BSS__PFC__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__CREATE__BSS__PFC__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__ACK_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__ACK_aBQP_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__CREATE__BSS__PFC__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__CREATE__BSS__PFC__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__CREATE__BSS__PFC__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_CREATE_BSS_PFC_ACK", NULL, &PDU__BSSGP__CREATE__BSS__PFC__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__ACK_cause_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__CREATE__BSS__PFC__NACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__CREATE__BSS__PFC__NACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__CREATE__BSS__PFC__NACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__CREATE__BSS__PFC__NACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__CREATE__BSS__PFC__NACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__CREATE__BSS__PFC__NACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__CREATE__BSS__PFC__NACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_CREATE_BSS_PFC_NACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__CREATE__BSS__PFC__NACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__CREATE__BSS__PFC__NACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__NACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__NACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__NACK_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__NACK_cause_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__CREATE__BSS__PFC__NACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__CREATE__BSS__PFC__NACK
const TTCN_Typedescriptor_t PDU__BSSGP__CREATE__BSS__PFC__NACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_CREATE_BSS_PFC_NACK", NULL, &PDU__BSSGP__CREATE__BSS__PFC__NACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__CREATE__BSS__PFC__NACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__MODIFY__BSS__PFC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__MODIFY__BSS__PFC_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__MODIFY__BSS__PFC_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__MODIFY__BSS__PFC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__MODIFY__BSS__PFC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__MODIFY__BSS__PFC_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__MODIFY__BSS__PFC_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_MODIFY_BSS_PFC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__MODIFY__BSS__PFC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__MODIFY__BSS__PFC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC_aBQP_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__MODIFY__BSS__PFC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__MODIFY__BSS__PFC
const TTCN_Typedescriptor_t PDU__BSSGP__MODIFY__BSS__PFC_descr_ = { "@BSSGP_Types.PDU_BSSGP_MODIFY_BSS_PFC", NULL, &PDU__BSSGP__MODIFY__BSS__PFC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__MODIFY__BSS__PFC__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__MODIFY__BSS__PFC__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__MODIFY__BSS__PFC__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__MODIFY__BSS__PFC__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__MODIFY__BSS__PFC__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__MODIFY__BSS__PFC__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__MODIFY__BSS__PFC__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_MODIFY_BSS_PFC_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__MODIFY__BSS__PFC__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__MODIFY__BSS__PFC__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC__ACK_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC__ACK_pFT_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC__ACK_aBQP_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__MODIFY__BSS__PFC__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__MODIFY__BSS__PFC__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__MODIFY__BSS__PFC__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_MODIFY_BSS_PFC_ACK", NULL, &PDU__BSSGP__MODIFY__BSS__PFC__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MODIFY__BSS__PFC__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__DELETE__BSS__PFC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__DELETE__BSS__PFC_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__DELETE__BSS__PFC_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__DELETE__BSS__PFC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__DELETE__BSS__PFC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__DELETE__BSS__PFC_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__DELETE__BSS__PFC_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_DELETE_BSS_PFC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__DELETE__BSS__PFC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__DELETE__BSS__PFC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC_pFI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__DELETE__BSS__PFC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__DELETE__BSS__PFC
const TTCN_Typedescriptor_t PDU__BSSGP__DELETE__BSS__PFC_descr_ = { "@BSSGP_Types.PDU_BSSGP_DELETE_BSS_PFC", NULL, &PDU__BSSGP__DELETE__BSS__PFC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__DELETE__BSS__PFC__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__DELETE__BSS__PFC__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__DELETE__BSS__PFC__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__DELETE__BSS__PFC__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__DELETE__BSS__PFC__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__DELETE__BSS__PFC__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__DELETE__BSS__PFC__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_DELETE_BSS_PFC_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__DELETE__BSS__PFC__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__DELETE__BSS__PFC__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC__ACK_pFI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__DELETE__BSS__PFC__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__DELETE__BSS__PFC__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__DELETE__BSS__PFC__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_DELETE_BSS_PFC_ACK", NULL, &PDU__BSSGP__DELETE__BSS__PFC__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__FLOW__CONTROL__PFC_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__FLOW__CONTROL__PFC_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__FLOW__CONTROL__PFC_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__FLOW__CONTROL__PFC_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__FLOW__CONTROL__PFC_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__FLOW__CONTROL__PFC_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__PFC_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_PFC.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__FLOW__CONTROL__PFC_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__FLOW__CONTROL__PFC_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC_tag_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC_pFC__flow__control__parameters_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__FLOW__CONTROL__PFC_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__FLOW__CONTROL__PFC
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__PFC_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_PFC", NULL, &PDU__BSSGP__FLOW__CONTROL__PFC_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC_mS__Bucket__Size_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC_bucket__Leak__Rate_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC_bucket__Full__Ratio_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC_flow__Control__Granularity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__FLOW__CONTROL__PFC__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__FLOW__CONTROL__PFC__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__FLOW__CONTROL__PFC__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__FLOW__CONTROL__PFC__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__FLOW__CONTROL__PFC__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__FLOW__CONTROL__PFC__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__PFC__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_PFC_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__FLOW__CONTROL__PFC__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__FLOW__CONTROL__PFC__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC__ACK_tag_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__FLOW__CONTROL__PFC__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__FLOW__CONTROL__PFC__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__FLOW__CONTROL__PFC__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_FLOW_CONTROL_PFC_ACK", NULL, &PDU__BSSGP__FLOW__CONTROL__PFC__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__FLOW__CONTROL__PFC__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__DELETE__BSS__PFC__REQ_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__DELETE__BSS__PFC__REQ_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__DELETE__BSS__PFC__REQ_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__DELETE__BSS__PFC__REQ_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__DELETE__BSS__PFC__REQ_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__DELETE__BSS__PFC__REQ_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__DELETE__BSS__PFC__REQ_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_DELETE_BSS_PFC_REQ.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__DELETE__BSS__PFC__REQ_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__DELETE__BSS__PFC__REQ_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC__REQ_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC__REQ_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC__REQ_pFI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC__REQ_cause_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__DELETE__BSS__PFC__REQ_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__DELETE__BSS__PFC__REQ
const TTCN_Typedescriptor_t PDU__BSSGP__DELETE__BSS__PFC__REQ_descr_ = { "@BSSGP_Types.PDU_BSSGP_DELETE_BSS_PFC_REQ", NULL, &PDU__BSSGP__DELETE__BSS__PFC__REQ_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__DELETE__BSS__PFC__REQ_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PS__HANDOVER__REQUIRED_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PS__HANDOVER__REQUIRED_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PS__HANDOVER__REQUIRED_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PS__HANDOVER__REQUIRED_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PS__HANDOVER__REQUIRED_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUIRED.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PS__HANDOVER__REQUIRED_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PS__HANDOVER__REQUIRED_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_cause_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_source__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_cell__or__RNC__Id__with__Transparent__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_active__PFCs__List_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PS__HANDOVER__REQUIRED
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUIRED", NULL, &PDU__BSSGP__PS__HANDOVER__REQUIRED_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_target__ENB__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_reliable__Inter__RAT__Handover__Info_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_cSG__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_tracking__Area__Code_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUIRED_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_list__of__set__up__PFCs_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUIRED_ACK", NULL, &PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_target__BSS__to__Source__BSS__Transparent__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_target__to__Source__Transparent__Container_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUIRED_NACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_cause_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUIRED_NACK", NULL, &PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PS__HANDOVER__REQUEST_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PS__HANDOVER__REQUEST_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PS__HANDOVER__REQUEST_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PS__HANDOVER__REQUEST_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PS__HANDOVER__REQUEST_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUEST.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PS__HANDOVER__REQUEST_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PS__HANDOVER__REQUEST_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_iMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_cause_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_source__BSS__to__Target__BSS__Transparent__Container__BSSGP_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_pFCs__to__be__set__up__list_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PS__HANDOVER__REQUEST
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUEST", NULL, &PDU__BSSGP__PS__HANDOVER__REQUEST_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_source__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_source__RNC__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_target__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_nAS__container__for__PS__Handover_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_service__UTRAN__CCO_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_subscriber__Profile__ID__For__RAT__Priority_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_reliable__Inter__RAT__Handover__Info_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUEST_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_list__of__set__up__PFCs_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_target__BSS__to__Source__BSS__Transparent__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PS__HANDOVER__REQUEST__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUEST_ACK", NULL, &PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUEST_NACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_cause_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PS__HANDOVER__REQUEST__NACK
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_REQUEST_NACK", NULL, &PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__REQUEST__NACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PS__HANDOVER__COMPLETE_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PS__HANDOVER__COMPLETE_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PS__HANDOVER__COMPLETE_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PS__HANDOVER__COMPLETE_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PS__HANDOVER__COMPLETE_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PS__HANDOVER__COMPLETE_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__COMPLETE_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_COMPLETE.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PS__HANDOVER__COMPLETE_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PS__HANDOVER__COMPLETE_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE_iMSI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PS__HANDOVER__COMPLETE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PS__HANDOVER__COMPLETE
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__COMPLETE_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_COMPLETE", NULL, &PDU__BSSGP__PS__HANDOVER__COMPLETE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE_target__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE_request__For__Inter__RAT__Handover__Info_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PS__HANDOVER__CANCEL_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PS__HANDOVER__CANCEL_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PS__HANDOVER__CANCEL_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PS__HANDOVER__CANCEL_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PS__HANDOVER__CANCEL_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PS__HANDOVER__CANCEL_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__CANCEL_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_CANCEL.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PS__HANDOVER__CANCEL_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PS__HANDOVER__CANCEL_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__CANCEL_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__CANCEL_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__CANCEL_cause_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__CANCEL_source__Cell__Identifier_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PS__HANDOVER__CANCEL_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PS__HANDOVER__CANCEL
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__CANCEL_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_CANCEL", NULL, &PDU__BSSGP__PS__HANDOVER__CANCEL_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__CANCEL_target__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__CANCEL_target__RNC__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__CANCEL_target__Enb__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__CANCEL_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_COMPLETE_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_inter__RAT__Handover__Info__BSSGP_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_PS_HANDOVER_COMPLETE_ACK", NULL, &PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_e__UTRAN__Inter__RAT__Handover__Info_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__OVERLOAD_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__OVERLOAD_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__OVERLOAD_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__OVERLOAD_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__OVERLOAD_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__OVERLOAD_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__OVERLOAD_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_OVERLOAD.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__OVERLOAD_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__OVERLOAD_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__OVERLOAD_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__OVERLOAD_priority__Class__Indicator_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__OVERLOAD_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__OVERLOAD
const TTCN_Typedescriptor_t PDU__BSSGP__OVERLOAD_descr_ = { "@BSSGP_Types.PDU_BSSGP_OVERLOAD", NULL, &PDU__BSSGP__OVERLOAD_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__OVERLOAD_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PERFORM__LOCATION__REQUEST_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PERFORM__LOCATION__REQUEST_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PERFORM__LOCATION__REQUEST_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PERFORM__LOCATION__REQUEST_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PERFORM__LOCATION__REQUEST_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PERFORM__LOCATION__REQUEST_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PERFORM__LOCATION__REQUEST_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PERFORM_LOCATION_REQUEST.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PERFORM__LOCATION__REQUEST_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PERFORM__LOCATION__REQUEST_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_iMSI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_bVCI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_nSEI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_location__Type_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_cell__Identifier_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PERFORM__LOCATION__REQUEST_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PERFORM__LOCATION__REQUEST
const TTCN_Typedescriptor_t PDU__BSSGP__PERFORM__LOCATION__REQUEST_descr_ = { "@BSSGP_Types.PDU_BSSGP_PERFORM_LOCATION_REQUEST", NULL, &PDU__BSSGP__PERFORM__LOCATION__REQUEST_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_dRX__Parameters_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_lCS__Capability_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_lCS__Priority_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_lCS__QoS_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_lCS__Client__Type_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_requested__GPS__Assistance__Data_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_iMEI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_gANSS__Location__Type_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_requested__GANSS__Assistance__Data_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_eDRX__Parameters_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__REQUEST_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PERFORM_LOCATION_RESPONSE.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__RESPONSE_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__RESPONSE_bVCI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PERFORM__LOCATION__RESPONSE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PERFORM__LOCATION__RESPONSE
const TTCN_Typedescriptor_t PDU__BSSGP__PERFORM__LOCATION__RESPONSE_descr_ = { "@BSSGP_Types.PDU_BSSGP_PERFORM_LOCATION_RESPONSE", NULL, &PDU__BSSGP__PERFORM__LOCATION__RESPONSE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__RESPONSE_location__Estimate_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__RESPONSE_positioning__Data_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__RESPONSE_deciphering__Keys_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__RESPONSE_lCS__Cause_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__RESPONSE_velocityData_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__RESPONSE_gANSS__Positioning__Data_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__RESPONSE_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__PERFORM__LOCATION__ABORT_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__PERFORM__LOCATION__ABORT_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__PERFORM__LOCATION__ABORT_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__PERFORM__LOCATION__ABORT_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__PERFORM__LOCATION__ABORT_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__PERFORM__LOCATION__ABORT_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__PERFORM__LOCATION__ABORT_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_PERFORM_LOCATION_ABORT.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__PERFORM__LOCATION__ABORT_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__PERFORM__LOCATION__ABORT_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__ABORT_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__ABORT_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__ABORT_bVCI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__ABORT_lCS__Cause_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__PERFORM__LOCATION__ABORT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__PERFORM__LOCATION__ABORT
const TTCN_Typedescriptor_t PDU__BSSGP__PERFORM__LOCATION__ABORT_descr_ = { "@BSSGP_Types.PDU_BSSGP_PERFORM_LOCATION_ABORT", NULL, &PDU__BSSGP__PERFORM__LOCATION__ABORT_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__PERFORM__LOCATION__ABORT_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__POSITION__COMMAND_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__POSITION__COMMAND_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__POSITION__COMMAND_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__POSITION__COMMAND_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__POSITION__COMMAND_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__POSITION__COMMAND_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__POSITION__COMMAND_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_POSITION_COMMAND.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__POSITION__COMMAND_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__POSITION__COMMAND_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__COMMAND_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__COMMAND_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__COMMAND_bVCI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__COMMAND_rRLP__Flags_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__COMMAND_rRLP__APDU_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__POSITION__COMMAND_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__POSITION__COMMAND
const TTCN_Typedescriptor_t PDU__BSSGP__POSITION__COMMAND_descr_ = { "@BSSGP_Types.PDU_BSSGP_POSITION_COMMAND", NULL, &PDU__BSSGP__POSITION__COMMAND_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__COMMAND_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__POSITION__RESPONSE_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__POSITION__RESPONSE_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__POSITION__RESPONSE_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__POSITION__RESPONSE_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__POSITION__RESPONSE_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__POSITION__RESPONSE_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__POSITION__RESPONSE_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_POSITION_RESPONSE.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__POSITION__RESPONSE_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__POSITION__RESPONSE_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__RESPONSE_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__RESPONSE_tLLI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__RESPONSE_bVCI_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__POSITION__RESPONSE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__POSITION__RESPONSE
const TTCN_Typedescriptor_t PDU__BSSGP__POSITION__RESPONSE_descr_ = { "@BSSGP_Types.PDU_BSSGP_POSITION_RESPONSE", NULL, &PDU__BSSGP__POSITION__RESPONSE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__RESPONSE_rRLP__Flags_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__RESPONSE_rRLP__APDU_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__RESPONSE_lCS__Cause_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__POSITION__RESPONSE_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RAN__INFORMATION__REQUEST_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RAN__INFORMATION__REQUEST_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RAN__INFORMATION__REQUEST_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RAN__INFORMATION__REQUEST_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RAN__INFORMATION__REQUEST_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RAN__INFORMATION__REQUEST_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__REQUEST_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RAN_INFORMATION_REQUEST.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RAN__INFORMATION__REQUEST_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RAN__INFORMATION__REQUEST_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__REQUEST_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__REQUEST_destination__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__REQUEST_source__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__REQUEST_rIM__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RAN__INFORMATION__REQUEST_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RAN__INFORMATION__REQUEST
const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__REQUEST_descr_ = { "@BSSGP_Types.PDU_BSSGP_RAN_INFORMATION_REQUEST", NULL, &PDU__BSSGP__RAN__INFORMATION__REQUEST_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__REQUEST_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RAN__INFORMATION_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RAN__INFORMATION_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RAN__INFORMATION_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RAN__INFORMATION_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RAN__INFORMATION_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RAN__INFORMATION_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RAN_INFORMATION.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RAN__INFORMATION_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RAN__INFORMATION_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION_destination__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION_source__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION_rIM__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RAN__INFORMATION_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RAN__INFORMATION
const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION_descr_ = { "@BSSGP_Types.PDU_BSSGP_RAN_INFORMATION", NULL, &PDU__BSSGP__RAN__INFORMATION_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RAN__INFORMATION__ACK_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RAN__INFORMATION__ACK_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RAN__INFORMATION__ACK_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RAN__INFORMATION__ACK_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RAN__INFORMATION__ACK_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RAN__INFORMATION__ACK_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__ACK_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RAN_INFORMATION_ACK.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RAN__INFORMATION__ACK_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RAN__INFORMATION__ACK_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ACK_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ACK_destination__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ACK_source__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ACK_rIM__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RAN__INFORMATION__ACK_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RAN__INFORMATION__ACK
const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__ACK_descr_ = { "@BSSGP_Types.PDU_BSSGP_RAN_INFORMATION_ACK", NULL, &PDU__BSSGP__RAN__INFORMATION__ACK_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ACK_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RAN__INFORMATION__ERROR_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RAN__INFORMATION__ERROR_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RAN__INFORMATION__ERROR_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RAN__INFORMATION__ERROR_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RAN__INFORMATION__ERROR_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RAN__INFORMATION__ERROR_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__ERROR_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RAN_INFORMATION_ERROR.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RAN__INFORMATION__ERROR_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RAN__INFORMATION__ERROR_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ERROR_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ERROR_destination__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ERROR_source__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ERROR_rIM__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RAN__INFORMATION__ERROR_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RAN__INFORMATION__ERROR
const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__ERROR_descr_ = { "@BSSGP_Types.PDU_BSSGP_RAN_INFORMATION_ERROR", NULL, &PDU__BSSGP__RAN__INFORMATION__ERROR_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__ERROR_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_destination__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_source__Cell__Identifier_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_rIM__Container_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR
const TTCN_Typedescriptor_t PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_descr_ = { "@BSSGP_Types.PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR", NULL, &PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__MBMS__SESSION__START__REQUEST_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__MBMS__SESSION__START__REQUEST_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__MBMS__SESSION__START__REQUEST_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__MBMS__SESSION__START__REQUEST_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__MBMS__SESSION__START__REQUEST_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__MBMS__SESSION__START__REQUEST_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__MBMS__SESSION__START__REQUEST_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_MBMS_SESSION_START_REQUEST.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__MBMS__SESSION__START__REQUEST_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__MBMS__SESSION__START__REQUEST_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_tMGI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_aBQP_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_mBMS__Service__Area__Identity__List_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_mBMS__Routing__Area__List_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_mBMS__Session__Duration_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_mBMS__Session__Information_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_time__To__MBMS__Data__Transfer_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__MBMS__SESSION__START__REQUEST_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__MBMS__SESSION__START__REQUEST
const TTCN_Typedescriptor_t PDU__BSSGP__MBMS__SESSION__START__REQUEST_descr_ = { "@BSSGP_Types.PDU_BSSGP_MBMS_SESSION_START_REQUEST", NULL, &PDU__BSSGP__MBMS__SESSION__START__REQUEST_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_mBMS__Session__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_allocation__Retention__Priority_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_mBMS__Session__Repetition__Number_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__REQUEST_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__MBMS__SESSION__START__RESPONSE_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__MBMS__SESSION__START__RESPONSE_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__MBMS__SESSION__START__RESPONSE_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__MBMS__SESSION__START__RESPONSE_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__MBMS__SESSION__START__RESPONSE_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__MBMS__SESSION__START__RESPONSE_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__MBMS__SESSION__START__RESPONSE_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_MBMS_SESSION_START_RESPONSE.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__MBMS__SESSION__START__RESPONSE_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__MBMS__SESSION__START__RESPONSE_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__RESPONSE_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__RESPONSE_tMGI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__RESPONSE_mBMS__Response_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__MBMS__SESSION__START__RESPONSE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__MBMS__SESSION__START__RESPONSE
const TTCN_Typedescriptor_t PDU__BSSGP__MBMS__SESSION__START__RESPONSE_descr_ = { "@BSSGP_Types.PDU_BSSGP_MBMS_SESSION_START_RESPONSE", NULL, &PDU__BSSGP__MBMS__SESSION__START__RESPONSE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__RESPONSE_mBMS__Session__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__START__RESPONSE_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_MBMS_SESSION_STOP_REQUEST.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_tMGI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_mBMS__Stop__Cause_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__MBMS__SESSION__STOP__REQUEST
const TTCN_Typedescriptor_t PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_descr_ = { "@BSSGP_Types.PDU_BSSGP_MBMS_SESSION_STOP_REQUEST", NULL, &PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_mBMS__Session__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__SESSION__STOP__REQUEST_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__MBMS__STOP__RESPONSE_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__MBMS__STOP__RESPONSE_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__MBMS__STOP__RESPONSE_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__MBMS__STOP__RESPONSE_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__MBMS__STOP__RESPONSE_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__MBMS__STOP__RESPONSE_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__MBMS__STOP__RESPONSE_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_MBMS_STOP_RESPONSE.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__MBMS__STOP__RESPONSE_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__MBMS__STOP__RESPONSE_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__STOP__RESPONSE_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__STOP__RESPONSE_tMGI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__STOP__RESPONSE_mBMS__Response_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__MBMS__STOP__RESPONSE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__MBMS__STOP__RESPONSE
const TTCN_Typedescriptor_t PDU__BSSGP__MBMS__STOP__RESPONSE_descr_ = { "@BSSGP_Types.PDU_BSSGP_MBMS_STOP_RESPONSE", NULL, &PDU__BSSGP__MBMS__STOP__RESPONSE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__STOP__RESPONSE_mBMS__Session__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__MBMS__STOP__RESPONSE_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__SESSION__UPDATE__REQUEST_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__SESSION__UPDATE__REQUEST_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__SESSION__UPDATE__REQUEST_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__SESSION__UPDATE__REQUEST_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__SESSION__UPDATE__REQUEST_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__SESSION__UPDATE__REQUEST_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__SESSION__UPDATE__REQUEST_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_SESSION_UPDATE_REQUEST.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__SESSION__UPDATE__REQUEST_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__SESSION__UPDATE__REQUEST_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_tMGI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_aBQP_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_mBMS__Service__Area__Identity__List_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_mBMS__Routing__Area__List_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_mBMS__Session__Duration_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_mBMS__Session__Information_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_time__To__MBMS__Data__Transfer_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__SESSION__UPDATE__REQUEST_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__SESSION__UPDATE__REQUEST
const TTCN_Typedescriptor_t PDU__BSSGP__SESSION__UPDATE__REQUEST_descr_ = { "@BSSGP_Types.PDU_BSSGP_SESSION_UPDATE_REQUEST", NULL, &PDU__BSSGP__SESSION__UPDATE__REQUEST_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_mBMS__Session__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_allocation__Retention__Priority_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_mBMS__Session__Repetition__Number_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__REQUEST_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP__SESSION__UPDATE__RESPONSE_bssgpPduType_xer_ = { {"bssgpPduType>\n", "bssgpPduType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP__SESSION__UPDATE__RESPONSE_bssgpPduType_oer_ext_arr_[0] = {};
const int PDU__BSSGP__SESSION__UPDATE__RESPONSE_bssgpPduType_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP__SESSION__UPDATE__RESPONSE_bssgpPduType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDU__BSSGP__SESSION__UPDATE__RESPONSE_bssgpPduType_oer_ext_arr_, 0, PDU__BSSGP__SESSION__UPDATE__RESPONSE_bssgpPduType_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP__SESSION__UPDATE__RESPONSE_bssgpPduType_descr_ = { "@BSSGP_Types.PDU_BSSGP_SESSION_UPDATE_RESPONSE.bssgpPduType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDU__BSSGP__SESSION__UPDATE__RESPONSE_bssgpPduType_xer_, &OCTETSTRING_json_, &PDU__BSSGP__SESSION__UPDATE__RESPONSE_bssgpPduType_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__RESPONSE_bssgpPduType_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__RESPONSE_tMGI_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__RESPONSE_mBMS__Response_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP__SESSION__UPDATE__RESPONSE_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP__SESSION__UPDATE__RESPONSE
const TTCN_Typedescriptor_t PDU__BSSGP__SESSION__UPDATE__RESPONSE_descr_ = { "@BSSGP_Types.PDU_BSSGP_SESSION_UPDATE_RESPONSE", NULL, &PDU__BSSGP__SESSION__UPDATE__RESPONSE_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__RESPONSE_mBMS__Session__Identity_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP__SESSION__UPDATE__RESPONSE_default_coding("RAW");
const TTCN_RAWdescriptor_t PDU__BSSGP_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN_CHAR_CODING,NULL,false};
// No XER for PDU__BSSGP
const TTCN_Typedescriptor_t PDU__BSSGP_descr_ = { "@BSSGP_Types.PDU_BSSGP", NULL, &PDU__BSSGP_raw_, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__DL__UNITDATA_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__UL__UNITDATA_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RA__CAPABILITY_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__DL__MBMS__UNITDATA_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__UL__MBMS__UNITDATA_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PAGING__PS_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PAGING__CS_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RA__CAPABILITY__UPDATE_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RA__CAPABILITY__UPDATE__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RADIO__STATUS_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__SUSPEND_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__SUSPEND__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__SUSPEND__NACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RESUME_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RESUME__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RESUME__NACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PAGING__PS__REJECT_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__DUMMY__PAGING__PS_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__DUMMY__PAGING__PS__RESPONSE_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__MS__REGISTRATION__ENQUIRY__RESPONSE_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__MS__REGISTRATION__ENQUIRY_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__FLUSH__LL_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__FLUSH__LL__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__LLC__DISCARDED_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__FLOW__CONTROL__BVC_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__FLOW__CONTROL__BVC__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__FLOW__CONTROL__MS_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__FLOW__CONTROL__MS__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__FLOW__CONTROL__PFC_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__FLOW__CONTROL__PFC__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__STATUS_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__BVC__BLOCK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__BVC__BLOCK__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__BVC__UNBLOCK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__BVC__UNBLOCK__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__BVC__RESET_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__BVC__RESET__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__SGSN__INVOKE__TRACE_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__DOWNLOAD__BSS__PFC_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__CREATE__BSS__PFC_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__CREATE__BSS__PFC__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__CREATE__BSS__PFC__NACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__MODIFY__BSS__PFC_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__MODIFY__BSS__PFC__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__DELETE__BSS__PFC_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__DELETE__BSS__PFC__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__DELETE__BSS__PFC__REQ_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PS__HANDOVER__REQUIRED_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PS__HANDOVER__REQUIRED__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PS__HANDOVER__REQUIRED__NACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PS__HANDOVER__REQUEST_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PS__HANDOVER__REQUEST__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PS__HANDOVER__REQUEST__NACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PS__HANDOVER__COMPLETE_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PS__HANDOVER__COMPLETE__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PS__HANDOVER__CANCEL_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__OVERLOAD_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PERFORM__LOCATION__REQUEST_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PERFORM__LOCATION__RESPONSE_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__PERFORM__LOCATION__ABORT_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__POSITION__COMMAND_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__POSITION__RESPONSE_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RAN__INFORMATION_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RAN__INFORMATION__REQUEST_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RAN__INFORMATION__ACK_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RAN__INFORMATION__ERROR_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__RAN__INFORMATION__APPLICATION__ERROR_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__MBMS__SESSION__START__REQUEST_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__MBMS__SESSION__START__RESPONSE_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__MBMS__SESSION__STOP__REQUEST_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__MBMS__STOP__RESPONSE_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__SESSION__UPDATE__REQUEST_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__SESSION__UPDATE__RESPONSE_default_coding("RAW");
const XERdescriptor_t       PDU__BSSGP_pDU__BSSGP__unknown_xer_ = { {"pDU_BSSGP_unknown>\n", "pDU_BSSGP_unknown>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
const int PDU__BSSGP_pDU__BSSGP__unknown_oer_ext_arr_[0] = {};
const int PDU__BSSGP_pDU__BSSGP__unknown_oer_p_[0] = {};
const TTCN_OERdescriptor_t PDU__BSSGP_pDU__BSSGP__unknown_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDU__BSSGP_pDU__BSSGP__unknown_oer_ext_arr_, 0, PDU__BSSGP_pDU__BSSGP__unknown_oer_p_};
const TTCN_Typedescriptor_t PDU__BSSGP_pDU__BSSGP__unknown_descr_ = { "@BSSGP_Types.PDU_BSSGP.pDU_BSSGP_unknown", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &PDU__BSSGP_pDU__BSSGP__unknown_xer_, &OCTETSTRING_json_, &PDU__BSSGP_pDU__BSSGP__unknown_oer_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
UNIVERSAL_CHARSTRING PDU__BSSGP_pDU__BSSGP__unknown_default_coding("RAW");
UNIVERSAL_CHARSTRING PDU__BSSGP_default_coding("RAW");
TTCN_Module module_object("BSSGP_Types", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_11,
  current_runtime_version.requires_minor_version_1,
  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);

/* Member functions of C++ classes */

void LIN2__2a::copy_value(const LIN2__2a& other_value)
{
switch (other_value.union_selection) {
case ALT_length1:
field_length1 = new INTEGER(*other_value.field_length1);
break;
case ALT_length2:
field_length2 = new INTEGER(*other_value.field_length2);
break;
default:
TTCN_error("Assignment of an unbound union value of type @BSSGP_Types.LIN2_2a.");
}
union_selection = other_value.union_selection;
}

LIN2__2a::LIN2__2a()
{
union_selection = UNBOUND_VALUE;
}

LIN2__2a::LIN2__2a(const LIN2__2a& other_value)
: Base_Type(){
copy_value(other_value);
}

LIN2__2a::~LIN2__2a()
{
clean_up();
}

LIN2__2a& LIN2__2a::operator=(const LIN2__2a& other_value)
{
if (this != &other_value) {
clean_up();
copy_value(other_value);
}
return *this;
}

boolean LIN2__2a::operator==(const LIN2__2a& other_value) const
{
if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @BSSGP_Types.LIN2_2a.");
if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @BSSGP_Types.LIN2_2a.");
if (union_selection != other_value.union_selection) return FALSE;
switch (union_selection) {
case ALT_length1:
return *field_length1 == *other_value.field_length1;
case ALT_length2:
return *field_length2 == *other_value.field_length2;
default:
return FALSE;
}
}

INTEGER& LIN2__2a::length1()
{
if (union_selection != ALT_length1) {
clean_up();
field_length1 = new INTEGER;
union_selection = ALT_length1;
}
return *field_length1;
}

const INTEGER& LIN2__2a::length1() const
{
if (union_selection != ALT_length1) TTCN_error("Using non-selected field length1 in a value of union type @BSSGP_Types.LIN2_2a.");
return *field_length1;
}

INTEGER& LIN2__2a::length2()
{
if (union_selection != ALT_length2) {
clean_up();
field_length2 = new INTEGER;
union_selection = ALT_length2;
}
return *field_length2;
}

const INTEGER& LIN2__2a::length2() const
{
if (union_selection != ALT_length2) TTCN_error("Using non-selected field length2 in a value of union type @BSSGP_Types.LIN2_2a.");
return *field_length2;
}

boolean LIN2__2a::ischosen(union_selection_type checked_selection) const
{
if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @BSSGP_Types.LIN2_2a.");
return union_selection == checked_selection;
}

boolean LIN2__2a::is_bound() const
{
  return union_selection != UNBOUND_VALUE;
}

boolean LIN2__2a::is_value() const
{
switch (union_selection) {
case UNBOUND_VALUE: return FALSE;
case ALT_length1: return field_length1->is_value();
case ALT_length2: return field_length2->is_value();
default: TTCN_error("Invalid selection in union is_bound");}
}

void LIN2__2a::clean_up()
{
switch (union_selection) {
case ALT_length1:
  delete field_length1;
  break;
case ALT_length2:
  delete field_length2;
  break;
default:
  break;
}
union_selection = UNBOUND_VALUE;
}

void LIN2__2a::log() const
{
switch (union_selection) {
case ALT_length1:
TTCN_Logger::log_event_str("{ length1 := ");
field_length1->log();
TTCN_Logger::log_event_str(" }");
break;
case ALT_length2:
TTCN_Logger::log_event_str("{ length2 := ");
field_length2->log();
TTCN_Logger::log_event_str(" }");
break;
default:
TTCN_Logger::log_event_unbound();
}
}

void LIN2__2a::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "union value");
  Module_Param_Ptr m_p = &param;
  if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return;
  if (m_p->get_type()!=Module_Param::MP_Assignment_List) {
    param.error("union value with field name was expected");
  }
  Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1);
  char* last_name = mp_last->get_id()->get_name();
  if (!strcmp(last_name, "length1")) {
    length1().set_param(*mp_last);
    if (!length1().is_bound()) clean_up();
    return;
  }
  if (!strcmp(last_name, "length2")) {
    length2().set_param(*mp_last);
    if (!length2().is_bound()) clean_up();
    return;
  }
  mp_last->error("Field %s does not exist in type @BSSGP_Types.LIN2_2a.", last_name);
}

void LIN2__2a::set_implicit_omit()
{
switch (union_selection) {
case ALT_length1:
field_length1->set_implicit_omit(); break;
case ALT_length2:
field_length2->set_implicit_omit(); break;
default: break;
}
}

void LIN2__2a::encode_text(Text_Buf& text_buf) const
{
text_buf.push_int(union_selection);
switch (union_selection) {
case ALT_length1:
field_length1->encode_text(text_buf);
break;
case ALT_length2:
field_length2->encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an unbound value of union type @BSSGP_Types.LIN2_2a.");
}
}

void LIN2__2a::decode_text(Text_Buf& text_buf)
{
switch ((union_selection_type)text_buf.pull_int().get_val()) {
case ALT_length1:
length1().decode_text(text_buf);
break;
case ALT_length2:
length2().decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: Unrecognized union selector was received for type @BSSGP_Types.LIN2_2a.");
}
}

void LIN2__2a::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void LIN2__2a::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int LIN2__2a::RAW_decode(
const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, 
raw_order_t top_bit_ord, boolean no_err, int sel_field, boolean, const RAW_Force_Omit* force_omit)
{
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  int decoded_length=0;
  int starting_pos=p_buf.get_pos_bit();
  if(sel_field!=-1){
    switch(sel_field){
    case 0: {
      RAW_Force_Omit field_force_omit(0, force_omit, LIN2__2a_length1_descr_.raw->forceomit);
      decoded_length = length1().RAW_decode(LIN2__2a_length1_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
      break; }
    case 1: {
      RAW_Force_Omit field_force_omit(1, force_omit, LIN2__2a_length2_descr_.raw->forceomit);
      decoded_length = length2().RAW_decode(LIN2__2a_length2_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
      break; }
    default: break;
    }
    return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
  } else {
      p_buf.set_pos_bit(starting_pos);
      RAW_Force_Omit field_0_force_omit(0, force_omit, LIN2__2a_length1_descr_.raw->forceomit);
      decoded_length = length1().RAW_decode(LIN2__2a_length1_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_0_force_omit);
      if (decoded_length >= 0) {
         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
       }
      p_buf.set_pos_bit(starting_pos);
      RAW_Force_Omit field_1_force_omit(1, force_omit, LIN2__2a_length2_descr_.raw->forceomit);
      decoded_length = length2().RAW_decode(LIN2__2a_length2_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_1_force_omit);
      if (decoded_length >= 0) {
         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
       }
 }
 clean_up();
 return -1;
}

int LIN2__2a::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
{
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 2;  myleaf.body.node.nodes = init_nodes_of_enc_tree(2);
  memset(myleaf.body.node.nodes, 0, 2 * sizeof(RAW_enc_tree *));
  switch (union_selection) {
  case ALT_length1:
    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, LIN2__2a_length1_descr_.raw);
    encoded_length = field_length1->RAW_encode(LIN2__2a_length1_descr_, *myleaf.body.node.nodes[0]);
    myleaf.body.node.nodes[0]->coding_descr = &LIN2__2a_length1_descr_;
    break;
  case ALT_length2:
    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, LIN2__2a_length2_descr_.raw);
    encoded_length = field_length2->RAW_encode(LIN2__2a_length2_descr_, *myleaf.body.node.nodes[1]);
    myleaf.body.node.nodes[1]->coding_descr = &LIN2__2a_length2_descr_;
    break;
  default:
    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  }
  return encoded_length;
}

void LIN2__2a_template::copy_value(const LIN2__2a& other_value)
{
single_value.union_selection = other_value.get_selection();
switch (single_value.union_selection) {
case LIN2__2a::ALT_length1:
single_value.field_length1 = new INTEGER_template(other_value.length1());
break;
case LIN2__2a::ALT_length2:
single_value.field_length2 = new INTEGER_template(other_value.length2());
break;
default:
TTCN_error("Initializing a template with an unbound value of type @BSSGP_Types.LIN2_2a.");
}
set_selection(SPECIFIC_VALUE);
}

void LIN2__2a_template::copy_template(const LIN2__2a_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value.union_selection = other_value.single_value.union_selection;
switch (single_value.union_selection) {
case LIN2__2a::ALT_length1:
single_value.field_length1 = new INTEGER_template(*other_value.single_value.field_length1);
break;
case LIN2__2a::ALT_length2:
single_value.field_length2 = new INTEGER_template(*other_value.single_value.field_length2);
break;
default:
TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @BSSGP_Types.LIN2_2a.");
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new LIN2__2a_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new LIN2__2a_template(*other_value.implication_.precondition);
implication_.implied_template = new LIN2__2a_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized template of union type @BSSGP_Types.LIN2_2a.");
}
set_selection(other_value);
}

LIN2__2a_template::LIN2__2a_template()
{
}

LIN2__2a_template::LIN2__2a_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

LIN2__2a_template::LIN2__2a_template(const LIN2__2a& other_value)
{
copy_value(other_value);
}

LIN2__2a_template::LIN2__2a_template(const OPTIONAL<LIN2__2a>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LIN2__2a&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of union type @BSSGP_Types.LIN2_2a from an unbound optional field.");
}
}

LIN2__2a_template::LIN2__2a_template(LIN2__2a_template* p_precondition, LIN2__2a_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

LIN2__2a_template::LIN2__2a_template(Dynamic_Match_Interface<LIN2__2a>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<LIN2__2a>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

LIN2__2a_template::LIN2__2a_template(const LIN2__2a_template& other_value)
: Base_Template(){
copy_template(other_value);
}

LIN2__2a_template::~LIN2__2a_template()
{
clean_up();
}

void LIN2__2a_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
switch (single_value.union_selection) {
case LIN2__2a::ALT_length1:
delete single_value.field_length1;
break;
case LIN2__2a::ALT_length2:
delete single_value.field_length2;
default:
break;
}
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

LIN2__2a_template& LIN2__2a_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

LIN2__2a_template& LIN2__2a_template::operator=(const LIN2__2a& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

LIN2__2a_template& LIN2__2a_template::operator=(const OPTIONAL<LIN2__2a>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LIN2__2a&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of union type @BSSGP_Types.LIN2_2a.");
}
return *this;
}

LIN2__2a_template& LIN2__2a_template::operator=(const LIN2__2a_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean LIN2__2a_template::match(const LIN2__2a& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
{
LIN2__2a::union_selection_type value_selection = other_value.get_selection();
if (value_selection == LIN2__2a::UNBOUND_VALUE) return FALSE;
if (value_selection != single_value.union_selection) return FALSE;
switch (value_selection) {
case LIN2__2a::ALT_length1:
return single_value.field_length1->match(other_value.length1(), legacy);
case LIN2__2a::ALT_length2:
return single_value.field_length2->match(other_value.length2(), legacy);
default:
TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @BSSGP_Types.LIN2_2a.");
}
}
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error ("Matching an uninitialized template of union type @BSSGP_Types.LIN2_2a.");
}
return FALSE;
}

boolean LIN2__2a_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
switch (single_value.union_selection) {
case LIN2__2a::ALT_length1:
return single_value.field_length1->is_value();
case LIN2__2a::ALT_length2:
return single_value.field_length2->is_value();
default:
TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @BSSGP_Types.LIN2_2a.");
}
}

LIN2__2a LIN2__2a_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of union type @BSSGP_Types.LIN2_2a.");
LIN2__2a ret_val;
switch (single_value.union_selection) {
case LIN2__2a::ALT_length1:
ret_val.length1() = single_value.field_length1->valueof();
break;
case LIN2__2a::ALT_length2:
ret_val.length2() = single_value.field_length2->valueof();
break;
default:
TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @BSSGP_Types.LIN2_2a.");
}
return ret_val;
}

LIN2__2a_template& LIN2__2a_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @BSSGP_Types.LIN2_2a.");
if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @BSSGP_Types.LIN2_2a.");
return value_list.list_value[list_index];
}
void LIN2__2a_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @BSSGP_Types.LIN2_2a.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new LIN2__2a_template[list_length];
}

INTEGER_template& LIN2__2a_template::length1()
{
if (template_selection != SPECIFIC_VALUE || single_value.union_selection != LIN2__2a::ALT_length1) {
template_sel old_selection = template_selection;
clean_up();
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_length1 = new INTEGER_template(ANY_VALUE);
else single_value.field_length1 = new INTEGER_template;
single_value.union_selection = LIN2__2a::ALT_length1;
set_selection(SPECIFIC_VALUE);
}
return *single_value.field_length1;
}

const INTEGER_template& LIN2__2a_template::length1() const
{
if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field length1 in a non-specific template of union type @BSSGP_Types.LIN2_2a.");
if (single_value.union_selection != LIN2__2a::ALT_length1) TTCN_error("Accessing non-selected field length1 in a template of union type @BSSGP_Types.LIN2_2a.");
return *single_value.field_length1;
}

INTEGER_template& LIN2__2a_template::length2()
{
if (template_selection != SPECIFIC_VALUE || single_value.union_selection != LIN2__2a::ALT_length2) {
template_sel old_selection = template_selection;
clean_up();
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_length2 = new INTEGER_template(ANY_VALUE);
else single_value.field_length2 = new INTEGER_template;
single_value.union_selection = LIN2__2a::ALT_length2;
set_selection(SPECIFIC_VALUE);
}
return *single_value.field_length2;
}

const INTEGER_template& LIN2__2a_template::length2() const
{
if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field length2 in a non-specific template of union type @BSSGP_Types.LIN2_2a.");
if (single_value.union_selection != LIN2__2a::ALT_length2) TTCN_error("Accessing non-selected field length2 in a template of union type @BSSGP_Types.LIN2_2a.");
return *single_value.field_length2;
}

boolean LIN2__2a_template::ischosen(LIN2__2a::union_selection_type checked_selection) const
{
if (checked_selection == LIN2__2a::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @BSSGP_Types.LIN2_2a.");
switch (template_selection) {
case SPECIFIC_VALUE:
if (single_value.union_selection == LIN2__2a::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @BSSGP_Types.LIN2_2a.");
return single_value.union_selection == checked_selection;
case VALUE_LIST:
{
if (value_list.n_values < 1)
TTCN_error("Internal error: Performing ischosen() operation on a template of union type @BSSGP_Types.LIN2_2a containing an empty list.");
boolean ret_val = value_list.list_value[0].ischosen(checked_selection);
for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) {
ret_val = value_list.list_value[list_count].ischosen(checked_selection);
}
return ret_val;
}
default:
return FALSE;
}
return FALSE;
}

void LIN2__2a_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
switch (single_value.union_selection) {
case LIN2__2a::ALT_length1:
TTCN_Logger::log_event_str("{ length1 := ");
single_value.field_length1->log();
TTCN_Logger::log_event_str(" }");
break;
case LIN2__2a::ALT_length2:
TTCN_Logger::log_event_str("{ length2 := ");
single_value.field_length2->log();
TTCN_Logger::log_event_str(" }");
break;
default:
TTCN_Logger::log_event_str("<invalid selector>");
}
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void LIN2__2a_template::log_match(const LIN2__2a& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
return;
}
if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
switch (single_value.union_selection) {
case LIN2__2a::ALT_length1:
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
TTCN_Logger::log_logmatch_info(".length1");
single_value.field_length1->log_match(match_value.length1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
} else {
TTCN_Logger::log_event_str("{ length1 := ");
single_value.field_length1->log_match(match_value.length1(), legacy);
TTCN_Logger::log_event_str(" }");
}
break;
case LIN2__2a::ALT_length2:
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
TTCN_Logger::log_logmatch_info(".length2");
single_value.field_length2->log_match(match_value.length2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
} else {
TTCN_Logger::log_event_str("{ length2 := ");
single_value.field_length2->log_match(match_value.length2(), legacy);
TTCN_Logger::log_event_str(" }");
}
break;
default:
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str("<invalid selector>");
}
} else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void LIN2__2a_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
switch (single_value.union_selection) {
case LIN2__2a::ALT_length1:
single_value.field_length1->set_implicit_omit(); break;
case LIN2__2a::ALT_length2:
single_value.field_length2->set_implicit_omit(); break;
default: break;
}
}

void LIN2__2a_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
text_buf.push_int(single_value.union_selection);
switch (single_value.union_selection) {
case LIN2__2a::ALT_length1:
single_value.field_length1->encode_text(text_buf);
break;
case LIN2__2a::ALT_length2:
single_value.field_length2->encode_text(text_buf);
break;
default:
TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @BSSGP_Types.LIN2_2a.");
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized template of type @BSSGP_Types.LIN2_2a.");
}
}

void LIN2__2a_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
{
single_value.union_selection = LIN2__2a::UNBOUND_VALUE;
LIN2__2a::union_selection_type new_selection = (LIN2__2a::union_selection_type)text_buf.pull_int().get_val();
switch (new_selection) {
case LIN2__2a::ALT_length1:
single_value.field_length1 = new INTEGER_template;
single_value.field_length1->decode_text(text_buf);
break;
case LIN2__2a::ALT_length2:
single_value.field_length2 = new INTEGER_template;
single_value.field_length2->decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @BSSGP_Types.LIN2_2a.");
}
single_value.union_selection = new_selection;
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new LIN2__2a_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: Unrecognized selector was received in a template of type @BSSGP_Types.LIN2_2a.");
}
}

boolean LIN2__2a_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean LIN2__2a_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int v_idx=0; v_idx<value_list.n_values; v_idx++)
if (value_list.list_value[v_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

void LIN2__2a_template::set_param(Module_Param& param)
{
  if (dynamic_cast<Module_Param_Name*>(param.get_id()) != NULL &&
      param.get_id()->next_name()) {
    char* param_field = param.get_id()->get_current_name();
    if (param_field[0] >= '0' && param_field[0] <= '9') {
      param.error("Unexpected array index in module parameter, expected a valid field"
        " name for union template type `@BSSGP_Types.LIN2_2a'");
    }
    if (strcmp("length1", param_field) == 0) {
      length1().set_param(param);
      return;
    } else if (strcmp("length2", param_field) == 0) {
      length2().set_param(param);
      return;
    } else param.error("Field `%s' not found in union template type `@BSSGP_Types.LIN2_2a'", param_field);
  }
  param.basic_check(Module_Param::BC_TEMPLATE, "union template");
  Module_Param_Ptr m_p = &param;
  switch (m_p->get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    LIN2__2a_template new_temp;
    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size());
    for (size_t p_i=0; p_i<m_p->get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (m_p->get_size()==0) break;
    param.type_error("union template", "@BSSGP_Types.LIN2_2a");
    break;
  case Module_Param::MP_Assignment_List: {
    Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1);
    char* last_name = mp_last->get_id()->get_name();
    if (!strcmp(last_name, "length1")) {
      length1().set_param(*mp_last);
      break;
    }
    if (!strcmp(last_name, "length2")) {
      length2().set_param(*mp_last);
      break;
    }
    mp_last->error("Field %s does not exist in type @BSSGP_Types.LIN2_2a.", last_name);
  } break;
  case Module_Param::MP_Implication_Template: {
    LIN2__2a_template* precondition = new LIN2__2a_template;
    precondition->set_param(*m_p->get_elem(0));
    LIN2__2a_template* implied_template = new LIN2__2a_template;
    implied_template->set_param(*m_p->get_elem(1));
    *this = LIN2__2a_template(precondition, implied_template);
  } break;
  default:
    param.type_error("union template", "@BSSGP_Types.LIN2_2a");
  }
  is_ifpresent = param.get_ifpresent();
}

void LIN2__2a_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
switch (single_value.union_selection) {
case LIN2__2a::ALT_length1:
single_value.field_length1->check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LIN2_2a");
return;
case LIN2__2a::ALT_length2:
single_value.field_length2->check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LIN2_2a");
return;
default:
TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @BSSGP_Types.LIN2_2a.");
}
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.LIN2_2a");
}

Alignment__octets::Alignment__octets()
{
}

Alignment__octets::Alignment__octets(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_spare__octet)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_spare__octet(par_spare__octet)
{
}

Alignment__octets::Alignment__octets(const Alignment__octets& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.Alignment_octets.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.spare__octet().is_bound()) field_spare__octet = other_value.spare__octet();
else field_spare__octet.clean_up();
}

void Alignment__octets::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_spare__octet.clean_up();
}

const TTCN_Typedescriptor_t* Alignment__octets::get_descriptor() const { return &Alignment__octets_descr_; }
Alignment__octets& Alignment__octets::operator=(const Alignment__octets& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.Alignment_octets.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.spare__octet().is_bound()) field_spare__octet = other_value.spare__octet();
  else field_spare__octet.clean_up();
}
return *this;
}

boolean Alignment__octets::operator==(const Alignment__octets& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_spare__octet==other_value.field_spare__octet;
}

boolean Alignment__octets::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_spare__octet.is_bound());
}
boolean Alignment__octets::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_spare__octet.is_value();
}
void Alignment__octets::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", spare_octet := ");
field_spare__octet.log();
TTCN_Logger::log_event_str(" }");
}

void Alignment__octets::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (spare__octet().is_bound()) spare__octet().set_implicit_omit();
}

void Alignment__octets::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.Alignment_octets has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) spare__octet().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "spare_octet")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          spare__octet().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Alignment_octets: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.Alignment_octets");
  }
}

void Alignment__octets::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_spare__octet.encode_text(text_buf);
}

void Alignment__octets::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_spare__octet.decode_text(text_buf);
}

void Alignment__octets::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void Alignment__octets::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int Alignment__octets::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, Alignment__octets_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(Alignment__octets_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, Alignment__octets_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(Alignment__octets_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, OCTETSTRING_descr_.raw->forceomit);
  decoded_field_length = field_spare__octet.RAW_decode(OCTETSTRING_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_19) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int Alignment__octets::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Alignment__octets_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Alignment__octets_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, OCTETSTRING_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(Alignment__octets_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(Alignment__octets_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_spare__octet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(Alignment__octets_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(Alignment__octets_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_19) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_19.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct Alignment__octets_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_spare__octet;
};

void Alignment__octets_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_spare__octet = ANY_VALUE;
}
}
}

void Alignment__octets_template::copy_value(const Alignment__octets& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.spare__octet().is_bound()) {
  single_value->field_spare__octet = other_value.spare__octet();
} else {
  single_value->field_spare__octet.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void Alignment__octets_template::copy_template(const Alignment__octets_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.spare__octet().get_selection()) {
single_value->field_spare__octet = other_value.spare__octet();
} else {
single_value->field_spare__octet.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new Alignment__octets_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new Alignment__octets_template(*other_value.implication_.precondition);
implication_.implied_template = new Alignment__octets_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.Alignment_octets.");
break;
}
set_selection(other_value);
}

Alignment__octets_template::Alignment__octets_template()
{
}

Alignment__octets_template::Alignment__octets_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

Alignment__octets_template::Alignment__octets_template(const Alignment__octets& other_value)
{
copy_value(other_value);
}

Alignment__octets_template::Alignment__octets_template(const OPTIONAL<Alignment__octets>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Alignment__octets&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.Alignment_octets from an unbound optional field.");
}
}

Alignment__octets_template::Alignment__octets_template(Alignment__octets_template* p_precondition, Alignment__octets_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

Alignment__octets_template::Alignment__octets_template(Dynamic_Match_Interface<Alignment__octets>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<Alignment__octets>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

Alignment__octets_template::Alignment__octets_template(const Alignment__octets_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

Alignment__octets_template::~Alignment__octets_template()
{
clean_up();
}

Alignment__octets_template& Alignment__octets_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

Alignment__octets_template& Alignment__octets_template::operator=(const Alignment__octets& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

Alignment__octets_template& Alignment__octets_template::operator=(const OPTIONAL<Alignment__octets>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Alignment__octets&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.Alignment_octets.");
}
return *this;
}

Alignment__octets_template& Alignment__octets_template::operator=(const Alignment__octets_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean Alignment__octets_template::match(const Alignment__octets& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.spare__octet().is_bound()) return FALSE;
if(!single_value->field_spare__octet.match(other_value.spare__octet(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.Alignment_octets.");
}
return FALSE;
}

boolean Alignment__octets_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_spare__octet.is_bound();
}

boolean Alignment__octets_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_spare__octet.is_value();
}

void Alignment__octets_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

Alignment__octets Alignment__octets_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.Alignment_octets.");
Alignment__octets ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_spare__octet.is_bound()) {
ret_val.spare__octet() = single_value->field_spare__octet.valueof();
}
return ret_val;
}

void Alignment__octets_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.Alignment_octets.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new Alignment__octets_template[list_length];
}

Alignment__octets_template& Alignment__octets_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.Alignment_octets.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.Alignment_octets.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& Alignment__octets_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& Alignment__octets_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.Alignment_octets.");
return single_value->field_iEI;
}

BITSTRING_template& Alignment__octets_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& Alignment__octets_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.Alignment_octets.");
return single_value->field_ext;
}

LIN2__2a_template& Alignment__octets_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& Alignment__octets_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.Alignment_octets.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& Alignment__octets_template::spare__octet()
{
set_specific();
return single_value->field_spare__octet;
}

const OCTETSTRING_template& Alignment__octets_template::spare__octet() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field spare_octet of a non-specific template of type @BSSGP_Types.Alignment_octets.");
return single_value->field_spare__octet;
}

int Alignment__octets_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Alignment_octets which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.Alignment_octets containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Alignment_octets containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Alignment_octets containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Alignment_octets containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Alignment_octets containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Alignment_octets containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Alignment_octets containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Alignment_octets containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.Alignment_octets.");
  }
  return 0;
}

void Alignment__octets_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", spare_octet := ");
single_value->field_spare__octet.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void Alignment__octets_template::log_match(const Alignment__octets& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_spare__octet.match(match_value.spare__octet(), legacy)){
TTCN_Logger::log_logmatch_info(".spare_octet");
single_value->field_spare__octet.log_match(match_value.spare__octet(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", spare_octet := ");
single_value->field_spare__octet.log_match(match_value.spare__octet(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void Alignment__octets_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (spare__octet().is_bound()) spare__octet().set_implicit_omit();
}

void Alignment__octets_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_spare__octet.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.Alignment_octets.");
}
}

void Alignment__octets_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_spare__octet.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new Alignment__octets_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.Alignment_octets.");
}
}

void Alignment__octets_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    Alignment__octets_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.Alignment_octets has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) spare__octet().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "spare_octet")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          spare__octet().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Alignment_octets: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    Alignment__octets_template* precondition = new Alignment__octets_template;
    precondition->set_param(*param.get_elem(0));
    Alignment__octets_template* implied_template = new Alignment__octets_template;
    implied_template->set_param(*param.get_elem(1));
    *this = Alignment__octets_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.Alignment_octets");
  }
  is_ifpresent = param.get_ifpresent();
}

void Alignment__octets_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Alignment_octets");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Alignment_octets");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Alignment_octets");
single_value->field_spare__octet.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Alignment_octets");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.Alignment_octets");
}

boolean Alignment__octets_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean Alignment__octets_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

Bmax__default__MS::Bmax__default__MS()
{
}

Bmax__default__MS::Bmax__default__MS(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_bmax)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_bmax(par_bmax)
{
}

Bmax__default__MS::Bmax__default__MS(const Bmax__default__MS& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.Bmax_default_MS.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.bmax().is_bound()) field_bmax = other_value.bmax();
else field_bmax.clean_up();
}

void Bmax__default__MS::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_bmax.clean_up();
}

const TTCN_Typedescriptor_t* Bmax__default__MS::get_descriptor() const { return &Bmax__default__MS_descr_; }
Bmax__default__MS& Bmax__default__MS::operator=(const Bmax__default__MS& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.Bmax_default_MS.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.bmax().is_bound()) field_bmax = other_value.bmax();
  else field_bmax.clean_up();
}
return *this;
}

boolean Bmax__default__MS::operator==(const Bmax__default__MS& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_bmax==other_value.field_bmax;
}

boolean Bmax__default__MS::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_bmax.is_bound());
}
boolean Bmax__default__MS::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_bmax.is_value();
}
void Bmax__default__MS::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", bmax := ");
field_bmax.log();
TTCN_Logger::log_event_str(" }");
}

void Bmax__default__MS::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (bmax().is_bound()) bmax().set_implicit_omit();
}

void Bmax__default__MS::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.Bmax_default_MS has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bmax().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "bmax")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          bmax().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Bmax_default_MS: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.Bmax_default_MS");
  }
}

void Bmax__default__MS::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_bmax.encode_text(text_buf);
}

void Bmax__default__MS::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_bmax.decode_text(text_buf);
}

void Bmax__default__MS::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void Bmax__default__MS::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int Bmax__default__MS::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, Bmax__default__MS_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(Bmax__default__MS_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, Bmax__default__MS_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(Bmax__default__MS_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT2_descr_.raw->forceomit);
  decoded_field_length = field_bmax.RAW_decode(General__Types::OCT2_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_26) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int Bmax__default__MS::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Bmax__default__MS_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Bmax__default__MS_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(Bmax__default__MS_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(Bmax__default__MS_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_bmax.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(Bmax__default__MS_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(Bmax__default__MS_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_26) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_26.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct Bmax__default__MS_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_bmax;
};

void Bmax__default__MS_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_bmax = ANY_VALUE;
}
}
}

void Bmax__default__MS_template::copy_value(const Bmax__default__MS& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.bmax().is_bound()) {
  single_value->field_bmax = other_value.bmax();
} else {
  single_value->field_bmax.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void Bmax__default__MS_template::copy_template(const Bmax__default__MS_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.bmax().get_selection()) {
single_value->field_bmax = other_value.bmax();
} else {
single_value->field_bmax.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new Bmax__default__MS_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new Bmax__default__MS_template(*other_value.implication_.precondition);
implication_.implied_template = new Bmax__default__MS_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.Bmax_default_MS.");
break;
}
set_selection(other_value);
}

Bmax__default__MS_template::Bmax__default__MS_template()
{
}

Bmax__default__MS_template::Bmax__default__MS_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

Bmax__default__MS_template::Bmax__default__MS_template(const Bmax__default__MS& other_value)
{
copy_value(other_value);
}

Bmax__default__MS_template::Bmax__default__MS_template(const OPTIONAL<Bmax__default__MS>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Bmax__default__MS&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.Bmax_default_MS from an unbound optional field.");
}
}

Bmax__default__MS_template::Bmax__default__MS_template(Bmax__default__MS_template* p_precondition, Bmax__default__MS_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

Bmax__default__MS_template::Bmax__default__MS_template(Dynamic_Match_Interface<Bmax__default__MS>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<Bmax__default__MS>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

Bmax__default__MS_template::Bmax__default__MS_template(const Bmax__default__MS_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

Bmax__default__MS_template::~Bmax__default__MS_template()
{
clean_up();
}

Bmax__default__MS_template& Bmax__default__MS_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

Bmax__default__MS_template& Bmax__default__MS_template::operator=(const Bmax__default__MS& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

Bmax__default__MS_template& Bmax__default__MS_template::operator=(const OPTIONAL<Bmax__default__MS>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Bmax__default__MS&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.Bmax_default_MS.");
}
return *this;
}

Bmax__default__MS_template& Bmax__default__MS_template::operator=(const Bmax__default__MS_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean Bmax__default__MS_template::match(const Bmax__default__MS& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.bmax().is_bound()) return FALSE;
if(!single_value->field_bmax.match(other_value.bmax(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.Bmax_default_MS.");
}
return FALSE;
}

boolean Bmax__default__MS_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_bmax.is_bound();
}

boolean Bmax__default__MS_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_bmax.is_value();
}

void Bmax__default__MS_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

Bmax__default__MS Bmax__default__MS_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.Bmax_default_MS.");
Bmax__default__MS ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_bmax.is_bound()) {
ret_val.bmax() = single_value->field_bmax.valueof();
}
return ret_val;
}

void Bmax__default__MS_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.Bmax_default_MS.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new Bmax__default__MS_template[list_length];
}

Bmax__default__MS_template& Bmax__default__MS_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.Bmax_default_MS.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.Bmax_default_MS.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& Bmax__default__MS_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& Bmax__default__MS_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.Bmax_default_MS.");
return single_value->field_iEI;
}

BITSTRING_template& Bmax__default__MS_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& Bmax__default__MS_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.Bmax_default_MS.");
return single_value->field_ext;
}

LIN2__2a_template& Bmax__default__MS_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& Bmax__default__MS_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.Bmax_default_MS.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& Bmax__default__MS_template::bmax()
{
set_specific();
return single_value->field_bmax;
}

const OCTETSTRING_template& Bmax__default__MS_template::bmax() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field bmax of a non-specific template of type @BSSGP_Types.Bmax_default_MS.");
return single_value->field_bmax;
}

int Bmax__default__MS_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bmax_default_MS which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.Bmax_default_MS containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bmax_default_MS containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bmax_default_MS containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bmax_default_MS containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bmax_default_MS containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bmax_default_MS containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bmax_default_MS containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bmax_default_MS containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.Bmax_default_MS.");
  }
  return 0;
}

void Bmax__default__MS_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", bmax := ");
single_value->field_bmax.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void Bmax__default__MS_template::log_match(const Bmax__default__MS& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_bmax.match(match_value.bmax(), legacy)){
TTCN_Logger::log_logmatch_info(".bmax");
single_value->field_bmax.log_match(match_value.bmax(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", bmax := ");
single_value->field_bmax.log_match(match_value.bmax(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void Bmax__default__MS_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (bmax().is_bound()) bmax().set_implicit_omit();
}

void Bmax__default__MS_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_bmax.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.Bmax_default_MS.");
}
}

void Bmax__default__MS_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_bmax.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new Bmax__default__MS_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.Bmax_default_MS.");
}
}

void Bmax__default__MS_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    Bmax__default__MS_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.Bmax_default_MS has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bmax().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "bmax")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          bmax().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Bmax_default_MS: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    Bmax__default__MS_template* precondition = new Bmax__default__MS_template;
    precondition->set_param(*param.get_elem(0));
    Bmax__default__MS_template* implied_template = new Bmax__default__MS_template;
    implied_template->set_param(*param.get_elem(1));
    *this = Bmax__default__MS_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.Bmax_default_MS");
  }
  is_ifpresent = param.get_ifpresent();
}

void Bmax__default__MS_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Bmax_default_MS");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Bmax_default_MS");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Bmax_default_MS");
single_value->field_bmax.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Bmax_default_MS");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.Bmax_default_MS");
}

boolean Bmax__default__MS_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean Bmax__default__MS_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

BSS__Area__Indication::BSS__Area__Indication()
{
}

BSS__Area__Indication::BSS__Area__Indication(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_bSS__indicator)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_bSS__indicator(par_bSS__indicator)
{
}

BSS__Area__Indication::BSS__Area__Indication(const BSS__Area__Indication& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.BSS_Area_Indication.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.bSS__indicator().is_bound()) field_bSS__indicator = other_value.bSS__indicator();
else field_bSS__indicator.clean_up();
}

void BSS__Area__Indication::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_bSS__indicator.clean_up();
}

const TTCN_Typedescriptor_t* BSS__Area__Indication::get_descriptor() const { return &BSS__Area__Indication_descr_; }
BSS__Area__Indication& BSS__Area__Indication::operator=(const BSS__Area__Indication& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.BSS_Area_Indication.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.bSS__indicator().is_bound()) field_bSS__indicator = other_value.bSS__indicator();
  else field_bSS__indicator.clean_up();
}
return *this;
}

boolean BSS__Area__Indication::operator==(const BSS__Area__Indication& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_bSS__indicator==other_value.field_bSS__indicator;
}

boolean BSS__Area__Indication::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_bSS__indicator.is_bound());
}
boolean BSS__Area__Indication::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_bSS__indicator.is_value();
}
void BSS__Area__Indication::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", bSS_indicator := ");
field_bSS__indicator.log();
TTCN_Logger::log_event_str(" }");
}

void BSS__Area__Indication::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (bSS__indicator().is_bound()) bSS__indicator().set_implicit_omit();
}

void BSS__Area__Indication::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.BSS_Area_Indication has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bSS__indicator().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "bSS_indicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          bSS__indicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.BSS_Area_Indication: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.BSS_Area_Indication");
  }
}

void BSS__Area__Indication::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_bSS__indicator.encode_text(text_buf);
}

void BSS__Area__Indication::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_bSS__indicator.decode_text(text_buf);
}

void BSS__Area__Indication::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void BSS__Area__Indication::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int BSS__Area__Indication::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, BSS__Area__Indication_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(BSS__Area__Indication_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, BSS__Area__Indication_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(BSS__Area__Indication_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_bSS__indicator.RAW_decode(General__Types::OCT1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_27) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int BSS__Area__Indication::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BSS__Area__Indication_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BSS__Area__Indication_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT1_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(BSS__Area__Indication_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(BSS__Area__Indication_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_bSS__indicator.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(BSS__Area__Indication_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(BSS__Area__Indication_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_27) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_27.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct BSS__Area__Indication_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_bSS__indicator;
};

void BSS__Area__Indication_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_bSS__indicator = ANY_VALUE;
}
}
}

void BSS__Area__Indication_template::copy_value(const BSS__Area__Indication& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.bSS__indicator().is_bound()) {
  single_value->field_bSS__indicator = other_value.bSS__indicator();
} else {
  single_value->field_bSS__indicator.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void BSS__Area__Indication_template::copy_template(const BSS__Area__Indication_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.bSS__indicator().get_selection()) {
single_value->field_bSS__indicator = other_value.bSS__indicator();
} else {
single_value->field_bSS__indicator.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new BSS__Area__Indication_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new BSS__Area__Indication_template(*other_value.implication_.precondition);
implication_.implied_template = new BSS__Area__Indication_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.BSS_Area_Indication.");
break;
}
set_selection(other_value);
}

BSS__Area__Indication_template::BSS__Area__Indication_template()
{
}

BSS__Area__Indication_template::BSS__Area__Indication_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

BSS__Area__Indication_template::BSS__Area__Indication_template(const BSS__Area__Indication& other_value)
{
copy_value(other_value);
}

BSS__Area__Indication_template::BSS__Area__Indication_template(const OPTIONAL<BSS__Area__Indication>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const BSS__Area__Indication&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.BSS_Area_Indication from an unbound optional field.");
}
}

BSS__Area__Indication_template::BSS__Area__Indication_template(BSS__Area__Indication_template* p_precondition, BSS__Area__Indication_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

BSS__Area__Indication_template::BSS__Area__Indication_template(Dynamic_Match_Interface<BSS__Area__Indication>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<BSS__Area__Indication>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

BSS__Area__Indication_template::BSS__Area__Indication_template(const BSS__Area__Indication_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

BSS__Area__Indication_template::~BSS__Area__Indication_template()
{
clean_up();
}

BSS__Area__Indication_template& BSS__Area__Indication_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

BSS__Area__Indication_template& BSS__Area__Indication_template::operator=(const BSS__Area__Indication& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

BSS__Area__Indication_template& BSS__Area__Indication_template::operator=(const OPTIONAL<BSS__Area__Indication>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const BSS__Area__Indication&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.BSS_Area_Indication.");
}
return *this;
}

BSS__Area__Indication_template& BSS__Area__Indication_template::operator=(const BSS__Area__Indication_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean BSS__Area__Indication_template::match(const BSS__Area__Indication& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.bSS__indicator().is_bound()) return FALSE;
if(!single_value->field_bSS__indicator.match(other_value.bSS__indicator(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.BSS_Area_Indication.");
}
return FALSE;
}

boolean BSS__Area__Indication_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_bSS__indicator.is_bound();
}

boolean BSS__Area__Indication_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_bSS__indicator.is_value();
}

void BSS__Area__Indication_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

BSS__Area__Indication BSS__Area__Indication_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.BSS_Area_Indication.");
BSS__Area__Indication ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_bSS__indicator.is_bound()) {
ret_val.bSS__indicator() = single_value->field_bSS__indicator.valueof();
}
return ret_val;
}

void BSS__Area__Indication_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.BSS_Area_Indication.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new BSS__Area__Indication_template[list_length];
}

BSS__Area__Indication_template& BSS__Area__Indication_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.BSS_Area_Indication.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.BSS_Area_Indication.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& BSS__Area__Indication_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& BSS__Area__Indication_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.BSS_Area_Indication.");
return single_value->field_iEI;
}

BITSTRING_template& BSS__Area__Indication_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& BSS__Area__Indication_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.BSS_Area_Indication.");
return single_value->field_ext;
}

LIN2__2a_template& BSS__Area__Indication_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& BSS__Area__Indication_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.BSS_Area_Indication.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& BSS__Area__Indication_template::bSS__indicator()
{
set_specific();
return single_value->field_bSS__indicator;
}

const OCTETSTRING_template& BSS__Area__Indication_template::bSS__indicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field bSS_indicator of a non-specific template of type @BSSGP_Types.BSS_Area_Indication.");
return single_value->field_bSS__indicator;
}

int BSS__Area__Indication_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BSS_Area_Indication which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.BSS_Area_Indication containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BSS_Area_Indication containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BSS_Area_Indication containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BSS_Area_Indication containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BSS_Area_Indication containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BSS_Area_Indication containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BSS_Area_Indication containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BSS_Area_Indication containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.BSS_Area_Indication.");
  }
  return 0;
}

void BSS__Area__Indication_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", bSS_indicator := ");
single_value->field_bSS__indicator.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void BSS__Area__Indication_template::log_match(const BSS__Area__Indication& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_bSS__indicator.match(match_value.bSS__indicator(), legacy)){
TTCN_Logger::log_logmatch_info(".bSS_indicator");
single_value->field_bSS__indicator.log_match(match_value.bSS__indicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", bSS_indicator := ");
single_value->field_bSS__indicator.log_match(match_value.bSS__indicator(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void BSS__Area__Indication_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (bSS__indicator().is_bound()) bSS__indicator().set_implicit_omit();
}

void BSS__Area__Indication_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_bSS__indicator.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.BSS_Area_Indication.");
}
}

void BSS__Area__Indication_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_bSS__indicator.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new BSS__Area__Indication_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.BSS_Area_Indication.");
}
}

void BSS__Area__Indication_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    BSS__Area__Indication_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.BSS_Area_Indication has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bSS__indicator().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "bSS_indicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          bSS__indicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.BSS_Area_Indication: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    BSS__Area__Indication_template* precondition = new BSS__Area__Indication_template;
    precondition->set_param(*param.get_elem(0));
    BSS__Area__Indication_template* implied_template = new BSS__Area__Indication_template;
    implied_template->set_param(*param.get_elem(1));
    *this = BSS__Area__Indication_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.BSS_Area_Indication");
  }
  is_ifpresent = param.get_ifpresent();
}

void BSS__Area__Indication_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BSS_Area_Indication");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BSS_Area_Indication");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BSS_Area_Indication");
single_value->field_bSS__indicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BSS_Area_Indication");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.BSS_Area_Indication");
}

boolean BSS__Area__Indication_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean BSS__Area__Indication_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

Bucket__Leak__Rate::Bucket__Leak__Rate()
{
}

Bucket__Leak__Rate::Bucket__Leak__Rate(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_r__Value)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_r__Value(par_r__Value)
{
}

Bucket__Leak__Rate::Bucket__Leak__Rate(const Bucket__Leak__Rate& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.Bucket_Leak_Rate.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.r__Value().is_bound()) field_r__Value = other_value.r__Value();
else field_r__Value.clean_up();
}

void Bucket__Leak__Rate::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_r__Value.clean_up();
}

const TTCN_Typedescriptor_t* Bucket__Leak__Rate::get_descriptor() const { return &Bucket__Leak__Rate_descr_; }
Bucket__Leak__Rate& Bucket__Leak__Rate::operator=(const Bucket__Leak__Rate& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.Bucket_Leak_Rate.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.r__Value().is_bound()) field_r__Value = other_value.r__Value();
  else field_r__Value.clean_up();
}
return *this;
}

boolean Bucket__Leak__Rate::operator==(const Bucket__Leak__Rate& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_r__Value==other_value.field_r__Value;
}

boolean Bucket__Leak__Rate::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_r__Value.is_bound());
}
boolean Bucket__Leak__Rate::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_r__Value.is_value();
}
void Bucket__Leak__Rate::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", r_Value := ");
field_r__Value.log();
TTCN_Logger::log_event_str(" }");
}

void Bucket__Leak__Rate::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (r__Value().is_bound()) r__Value().set_implicit_omit();
}

void Bucket__Leak__Rate::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.Bucket_Leak_Rate has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) r__Value().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "r_Value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          r__Value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Bucket_Leak_Rate: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.Bucket_Leak_Rate");
  }
}

void Bucket__Leak__Rate::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_r__Value.encode_text(text_buf);
}

void Bucket__Leak__Rate::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_r__Value.decode_text(text_buf);
}

void Bucket__Leak__Rate::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void Bucket__Leak__Rate::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int Bucket__Leak__Rate::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, Bucket__Leak__Rate_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(Bucket__Leak__Rate_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, Bucket__Leak__Rate_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(Bucket__Leak__Rate_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT2_descr_.raw->forceomit);
  decoded_field_length = field_r__Value.RAW_decode(General__Types::OCT2_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_59) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int Bucket__Leak__Rate::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Bucket__Leak__Rate_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Bucket__Leak__Rate_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(Bucket__Leak__Rate_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(Bucket__Leak__Rate_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_r__Value.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(Bucket__Leak__Rate_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(Bucket__Leak__Rate_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_59) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_59.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct Bucket__Leak__Rate_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_r__Value;
};

void Bucket__Leak__Rate_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_r__Value = ANY_VALUE;
}
}
}

void Bucket__Leak__Rate_template::copy_value(const Bucket__Leak__Rate& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.r__Value().is_bound()) {
  single_value->field_r__Value = other_value.r__Value();
} else {
  single_value->field_r__Value.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void Bucket__Leak__Rate_template::copy_template(const Bucket__Leak__Rate_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.r__Value().get_selection()) {
single_value->field_r__Value = other_value.r__Value();
} else {
single_value->field_r__Value.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new Bucket__Leak__Rate_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new Bucket__Leak__Rate_template(*other_value.implication_.precondition);
implication_.implied_template = new Bucket__Leak__Rate_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.Bucket_Leak_Rate.");
break;
}
set_selection(other_value);
}

Bucket__Leak__Rate_template::Bucket__Leak__Rate_template()
{
}

Bucket__Leak__Rate_template::Bucket__Leak__Rate_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

Bucket__Leak__Rate_template::Bucket__Leak__Rate_template(const Bucket__Leak__Rate& other_value)
{
copy_value(other_value);
}

Bucket__Leak__Rate_template::Bucket__Leak__Rate_template(const OPTIONAL<Bucket__Leak__Rate>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Bucket__Leak__Rate&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.Bucket_Leak_Rate from an unbound optional field.");
}
}

Bucket__Leak__Rate_template::Bucket__Leak__Rate_template(Bucket__Leak__Rate_template* p_precondition, Bucket__Leak__Rate_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

Bucket__Leak__Rate_template::Bucket__Leak__Rate_template(Dynamic_Match_Interface<Bucket__Leak__Rate>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<Bucket__Leak__Rate>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

Bucket__Leak__Rate_template::Bucket__Leak__Rate_template(const Bucket__Leak__Rate_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

Bucket__Leak__Rate_template::~Bucket__Leak__Rate_template()
{
clean_up();
}

Bucket__Leak__Rate_template& Bucket__Leak__Rate_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

Bucket__Leak__Rate_template& Bucket__Leak__Rate_template::operator=(const Bucket__Leak__Rate& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

Bucket__Leak__Rate_template& Bucket__Leak__Rate_template::operator=(const OPTIONAL<Bucket__Leak__Rate>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Bucket__Leak__Rate&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.Bucket_Leak_Rate.");
}
return *this;
}

Bucket__Leak__Rate_template& Bucket__Leak__Rate_template::operator=(const Bucket__Leak__Rate_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean Bucket__Leak__Rate_template::match(const Bucket__Leak__Rate& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.r__Value().is_bound()) return FALSE;
if(!single_value->field_r__Value.match(other_value.r__Value(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.Bucket_Leak_Rate.");
}
return FALSE;
}

boolean Bucket__Leak__Rate_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_r__Value.is_bound();
}

boolean Bucket__Leak__Rate_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_r__Value.is_value();
}

void Bucket__Leak__Rate_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

Bucket__Leak__Rate Bucket__Leak__Rate_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.Bucket_Leak_Rate.");
Bucket__Leak__Rate ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_r__Value.is_bound()) {
ret_val.r__Value() = single_value->field_r__Value.valueof();
}
return ret_val;
}

void Bucket__Leak__Rate_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.Bucket_Leak_Rate.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new Bucket__Leak__Rate_template[list_length];
}

Bucket__Leak__Rate_template& Bucket__Leak__Rate_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.Bucket_Leak_Rate.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.Bucket_Leak_Rate.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& Bucket__Leak__Rate_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& Bucket__Leak__Rate_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.Bucket_Leak_Rate.");
return single_value->field_iEI;
}

BITSTRING_template& Bucket__Leak__Rate_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& Bucket__Leak__Rate_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.Bucket_Leak_Rate.");
return single_value->field_ext;
}

LIN2__2a_template& Bucket__Leak__Rate_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& Bucket__Leak__Rate_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.Bucket_Leak_Rate.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& Bucket__Leak__Rate_template::r__Value()
{
set_specific();
return single_value->field_r__Value;
}

const OCTETSTRING_template& Bucket__Leak__Rate_template::r__Value() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field r_Value of a non-specific template of type @BSSGP_Types.Bucket_Leak_Rate.");
return single_value->field_r__Value;
}

int Bucket__Leak__Rate_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bucket_Leak_Rate which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.Bucket_Leak_Rate containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bucket_Leak_Rate containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bucket_Leak_Rate containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bucket_Leak_Rate containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bucket_Leak_Rate containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bucket_Leak_Rate containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bucket_Leak_Rate containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Bucket_Leak_Rate containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.Bucket_Leak_Rate.");
  }
  return 0;
}

void Bucket__Leak__Rate_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", r_Value := ");
single_value->field_r__Value.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void Bucket__Leak__Rate_template::log_match(const Bucket__Leak__Rate& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_r__Value.match(match_value.r__Value(), legacy)){
TTCN_Logger::log_logmatch_info(".r_Value");
single_value->field_r__Value.log_match(match_value.r__Value(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", r_Value := ");
single_value->field_r__Value.log_match(match_value.r__Value(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void Bucket__Leak__Rate_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (r__Value().is_bound()) r__Value().set_implicit_omit();
}

void Bucket__Leak__Rate_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_r__Value.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.Bucket_Leak_Rate.");
}
}

void Bucket__Leak__Rate_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_r__Value.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new Bucket__Leak__Rate_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.Bucket_Leak_Rate.");
}
}

void Bucket__Leak__Rate_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    Bucket__Leak__Rate_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.Bucket_Leak_Rate has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) r__Value().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "r_Value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          r__Value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Bucket_Leak_Rate: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    Bucket__Leak__Rate_template* precondition = new Bucket__Leak__Rate_template;
    precondition->set_param(*param.get_elem(0));
    Bucket__Leak__Rate_template* implied_template = new Bucket__Leak__Rate_template;
    implied_template->set_param(*param.get_elem(1));
    *this = Bucket__Leak__Rate_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.Bucket_Leak_Rate");
  }
  is_ifpresent = param.get_ifpresent();
}

void Bucket__Leak__Rate_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Bucket_Leak_Rate");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Bucket_Leak_Rate");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Bucket_Leak_Rate");
single_value->field_r__Value.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Bucket_Leak_Rate");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.Bucket_Leak_Rate");
}

boolean Bucket__Leak__Rate_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean Bucket__Leak__Rate_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

BVC__Bucket__Size::BVC__Bucket__Size()
{
}

BVC__Bucket__Size::BVC__Bucket__Size(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_bmax)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_bmax(par_bmax)
{
}

BVC__Bucket__Size::BVC__Bucket__Size(const BVC__Bucket__Size& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.BVC_Bucket_Size.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.bmax().is_bound()) field_bmax = other_value.bmax();
else field_bmax.clean_up();
}

void BVC__Bucket__Size::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_bmax.clean_up();
}

const TTCN_Typedescriptor_t* BVC__Bucket__Size::get_descriptor() const { return &BVC__Bucket__Size_descr_; }
BVC__Bucket__Size& BVC__Bucket__Size::operator=(const BVC__Bucket__Size& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.BVC_Bucket_Size.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.bmax().is_bound()) field_bmax = other_value.bmax();
  else field_bmax.clean_up();
}
return *this;
}

boolean BVC__Bucket__Size::operator==(const BVC__Bucket__Size& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_bmax==other_value.field_bmax;
}

boolean BVC__Bucket__Size::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_bmax.is_bound());
}
boolean BVC__Bucket__Size::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_bmax.is_value();
}
void BVC__Bucket__Size::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", bmax := ");
field_bmax.log();
TTCN_Logger::log_event_str(" }");
}

void BVC__Bucket__Size::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (bmax().is_bound()) bmax().set_implicit_omit();
}

void BVC__Bucket__Size::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.BVC_Bucket_Size has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bmax().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "bmax")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          bmax().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.BVC_Bucket_Size: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.BVC_Bucket_Size");
  }
}

void BVC__Bucket__Size::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_bmax.encode_text(text_buf);
}

void BVC__Bucket__Size::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_bmax.decode_text(text_buf);
}

void BVC__Bucket__Size::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void BVC__Bucket__Size::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int BVC__Bucket__Size::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, BVC__Bucket__Size_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(BVC__Bucket__Size_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, BVC__Bucket__Size_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(BVC__Bucket__Size_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT2_descr_.raw->forceomit);
  decoded_field_length = field_bmax.RAW_decode(General__Types::OCT2_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_31) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int BVC__Bucket__Size::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BVC__Bucket__Size_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BVC__Bucket__Size_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(BVC__Bucket__Size_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(BVC__Bucket__Size_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_bmax.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(BVC__Bucket__Size_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(BVC__Bucket__Size_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_31) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_31.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct BVC__Bucket__Size_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_bmax;
};

void BVC__Bucket__Size_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_bmax = ANY_VALUE;
}
}
}

void BVC__Bucket__Size_template::copy_value(const BVC__Bucket__Size& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.bmax().is_bound()) {
  single_value->field_bmax = other_value.bmax();
} else {
  single_value->field_bmax.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void BVC__Bucket__Size_template::copy_template(const BVC__Bucket__Size_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.bmax().get_selection()) {
single_value->field_bmax = other_value.bmax();
} else {
single_value->field_bmax.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new BVC__Bucket__Size_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new BVC__Bucket__Size_template(*other_value.implication_.precondition);
implication_.implied_template = new BVC__Bucket__Size_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.BVC_Bucket_Size.");
break;
}
set_selection(other_value);
}

BVC__Bucket__Size_template::BVC__Bucket__Size_template()
{
}

BVC__Bucket__Size_template::BVC__Bucket__Size_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

BVC__Bucket__Size_template::BVC__Bucket__Size_template(const BVC__Bucket__Size& other_value)
{
copy_value(other_value);
}

BVC__Bucket__Size_template::BVC__Bucket__Size_template(const OPTIONAL<BVC__Bucket__Size>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const BVC__Bucket__Size&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.BVC_Bucket_Size from an unbound optional field.");
}
}

BVC__Bucket__Size_template::BVC__Bucket__Size_template(BVC__Bucket__Size_template* p_precondition, BVC__Bucket__Size_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

BVC__Bucket__Size_template::BVC__Bucket__Size_template(Dynamic_Match_Interface<BVC__Bucket__Size>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<BVC__Bucket__Size>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

BVC__Bucket__Size_template::BVC__Bucket__Size_template(const BVC__Bucket__Size_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

BVC__Bucket__Size_template::~BVC__Bucket__Size_template()
{
clean_up();
}

BVC__Bucket__Size_template& BVC__Bucket__Size_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

BVC__Bucket__Size_template& BVC__Bucket__Size_template::operator=(const BVC__Bucket__Size& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

BVC__Bucket__Size_template& BVC__Bucket__Size_template::operator=(const OPTIONAL<BVC__Bucket__Size>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const BVC__Bucket__Size&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.BVC_Bucket_Size.");
}
return *this;
}

BVC__Bucket__Size_template& BVC__Bucket__Size_template::operator=(const BVC__Bucket__Size_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean BVC__Bucket__Size_template::match(const BVC__Bucket__Size& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.bmax().is_bound()) return FALSE;
if(!single_value->field_bmax.match(other_value.bmax(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.BVC_Bucket_Size.");
}
return FALSE;
}

boolean BVC__Bucket__Size_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_bmax.is_bound();
}

boolean BVC__Bucket__Size_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_bmax.is_value();
}

void BVC__Bucket__Size_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

BVC__Bucket__Size BVC__Bucket__Size_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.BVC_Bucket_Size.");
BVC__Bucket__Size ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_bmax.is_bound()) {
ret_val.bmax() = single_value->field_bmax.valueof();
}
return ret_val;
}

void BVC__Bucket__Size_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.BVC_Bucket_Size.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new BVC__Bucket__Size_template[list_length];
}

BVC__Bucket__Size_template& BVC__Bucket__Size_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.BVC_Bucket_Size.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.BVC_Bucket_Size.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& BVC__Bucket__Size_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& BVC__Bucket__Size_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.BVC_Bucket_Size.");
return single_value->field_iEI;
}

BITSTRING_template& BVC__Bucket__Size_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& BVC__Bucket__Size_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.BVC_Bucket_Size.");
return single_value->field_ext;
}

LIN2__2a_template& BVC__Bucket__Size_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& BVC__Bucket__Size_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.BVC_Bucket_Size.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& BVC__Bucket__Size_template::bmax()
{
set_specific();
return single_value->field_bmax;
}

const OCTETSTRING_template& BVC__Bucket__Size_template::bmax() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field bmax of a non-specific template of type @BSSGP_Types.BVC_Bucket_Size.");
return single_value->field_bmax;
}

int BVC__Bucket__Size_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Bucket_Size which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Bucket_Size containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Bucket_Size containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Bucket_Size containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Bucket_Size containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Bucket_Size containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Bucket_Size containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Bucket_Size containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Bucket_Size containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.BVC_Bucket_Size.");
  }
  return 0;
}

void BVC__Bucket__Size_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", bmax := ");
single_value->field_bmax.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void BVC__Bucket__Size_template::log_match(const BVC__Bucket__Size& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_bmax.match(match_value.bmax(), legacy)){
TTCN_Logger::log_logmatch_info(".bmax");
single_value->field_bmax.log_match(match_value.bmax(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", bmax := ");
single_value->field_bmax.log_match(match_value.bmax(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void BVC__Bucket__Size_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (bmax().is_bound()) bmax().set_implicit_omit();
}

void BVC__Bucket__Size_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_bmax.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.BVC_Bucket_Size.");
}
}

void BVC__Bucket__Size_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_bmax.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new BVC__Bucket__Size_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.BVC_Bucket_Size.");
}
}

void BVC__Bucket__Size_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    BVC__Bucket__Size_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.BVC_Bucket_Size has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bmax().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "bmax")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          bmax().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.BVC_Bucket_Size: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    BVC__Bucket__Size_template* precondition = new BVC__Bucket__Size_template;
    precondition->set_param(*param.get_elem(0));
    BVC__Bucket__Size_template* implied_template = new BVC__Bucket__Size_template;
    implied_template->set_param(*param.get_elem(1));
    *this = BVC__Bucket__Size_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.BVC_Bucket_Size");
  }
  is_ifpresent = param.get_ifpresent();
}

void BVC__Bucket__Size_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVC_Bucket_Size");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVC_Bucket_Size");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVC_Bucket_Size");
single_value->field_bmax.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVC_Bucket_Size");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.BVC_Bucket_Size");
}

boolean BVC__Bucket__Size_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean BVC__Bucket__Size_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

BVCI::BVCI()
{
}

BVCI::BVCI(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_unstructured__value)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_unstructured__value(par_unstructured__value)
{
}

BVCI::BVCI(const BVCI& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.BVCI.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.unstructured__value().is_bound()) field_unstructured__value = other_value.unstructured__value();
else field_unstructured__value.clean_up();
}

void BVCI::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_unstructured__value.clean_up();
}

const TTCN_Typedescriptor_t* BVCI::get_descriptor() const { return &BVCI_descr_; }
BVCI& BVCI::operator=(const BVCI& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.BVCI.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.unstructured__value().is_bound()) field_unstructured__value = other_value.unstructured__value();
  else field_unstructured__value.clean_up();
}
return *this;
}

boolean BVCI::operator==(const BVCI& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_unstructured__value==other_value.field_unstructured__value;
}

boolean BVCI::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_unstructured__value.is_bound());
}
boolean BVCI::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_unstructured__value.is_value();
}
void BVCI::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", unstructured_value := ");
field_unstructured__value.log();
TTCN_Logger::log_event_str(" }");
}

void BVCI::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (unstructured__value().is_bound()) unstructured__value().set_implicit_omit();
}

void BVCI::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.BVCI has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) unstructured__value().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "unstructured_value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          unstructured__value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.BVCI: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.BVCI");
  }
}

void BVCI::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_unstructured__value.encode_text(text_buf);
}

void BVCI::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_unstructured__value.decode_text(text_buf);
}

void BVCI::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void BVCI::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int BVCI::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, BVCI_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(BVCI_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, BVCI_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(BVCI_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT2_descr_.raw->forceomit);
  decoded_field_length = field_unstructured__value.RAW_decode(General__Types::OCT2_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_30) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int BVCI::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BVCI_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BVCI_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(BVCI_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(BVCI_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_unstructured__value.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(BVCI_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(BVCI_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_30) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_30.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct BVCI_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_unstructured__value;
};

void BVCI_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_unstructured__value = ANY_VALUE;
}
}
}

void BVCI_template::copy_value(const BVCI& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.unstructured__value().is_bound()) {
  single_value->field_unstructured__value = other_value.unstructured__value();
} else {
  single_value->field_unstructured__value.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void BVCI_template::copy_template(const BVCI_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.unstructured__value().get_selection()) {
single_value->field_unstructured__value = other_value.unstructured__value();
} else {
single_value->field_unstructured__value.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new BVCI_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new BVCI_template(*other_value.implication_.precondition);
implication_.implied_template = new BVCI_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.BVCI.");
break;
}
set_selection(other_value);
}

BVCI_template::BVCI_template()
{
}

BVCI_template::BVCI_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

BVCI_template::BVCI_template(const BVCI& other_value)
{
copy_value(other_value);
}

BVCI_template::BVCI_template(const OPTIONAL<BVCI>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const BVCI&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.BVCI from an unbound optional field.");
}
}

BVCI_template::BVCI_template(BVCI_template* p_precondition, BVCI_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

BVCI_template::BVCI_template(Dynamic_Match_Interface<BVCI>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<BVCI>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

BVCI_template::BVCI_template(const BVCI_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

BVCI_template::~BVCI_template()
{
clean_up();
}

BVCI_template& BVCI_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

BVCI_template& BVCI_template::operator=(const BVCI& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

BVCI_template& BVCI_template::operator=(const OPTIONAL<BVCI>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const BVCI&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.BVCI.");
}
return *this;
}

BVCI_template& BVCI_template::operator=(const BVCI_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean BVCI_template::match(const BVCI& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.unstructured__value().is_bound()) return FALSE;
if(!single_value->field_unstructured__value.match(other_value.unstructured__value(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.BVCI.");
}
return FALSE;
}

boolean BVCI_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_unstructured__value.is_bound();
}

boolean BVCI_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_unstructured__value.is_value();
}

void BVCI_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

BVCI BVCI_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.BVCI.");
BVCI ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_unstructured__value.is_bound()) {
ret_val.unstructured__value() = single_value->field_unstructured__value.valueof();
}
return ret_val;
}

void BVCI_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.BVCI.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new BVCI_template[list_length];
}

BVCI_template& BVCI_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.BVCI.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.BVCI.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& BVCI_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& BVCI_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.BVCI.");
return single_value->field_iEI;
}

BITSTRING_template& BVCI_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& BVCI_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.BVCI.");
return single_value->field_ext;
}

LIN2__2a_template& BVCI_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& BVCI_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.BVCI.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& BVCI_template::unstructured__value()
{
set_specific();
return single_value->field_unstructured__value;
}

const OCTETSTRING_template& BVCI_template::unstructured__value() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field unstructured_value of a non-specific template of type @BSSGP_Types.BVCI.");
return single_value->field_unstructured__value;
}

int BVCI_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVCI which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.BVCI containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVCI containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVCI containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVCI containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVCI containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVCI containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVCI containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVCI containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.BVCI.");
  }
  return 0;
}

void BVCI_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", unstructured_value := ");
single_value->field_unstructured__value.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void BVCI_template::log_match(const BVCI& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_unstructured__value.match(match_value.unstructured__value(), legacy)){
TTCN_Logger::log_logmatch_info(".unstructured_value");
single_value->field_unstructured__value.log_match(match_value.unstructured__value(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", unstructured_value := ");
single_value->field_unstructured__value.log_match(match_value.unstructured__value(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void BVCI_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (unstructured__value().is_bound()) unstructured__value().set_implicit_omit();
}

void BVCI_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_unstructured__value.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.BVCI.");
}
}

void BVCI_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_unstructured__value.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new BVCI_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.BVCI.");
}
}

void BVCI_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    BVCI_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.BVCI has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) unstructured__value().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "unstructured_value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          unstructured__value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.BVCI: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    BVCI_template* precondition = new BVCI_template;
    precondition->set_param(*param.get_elem(0));
    BVCI_template* implied_template = new BVCI_template;
    implied_template->set_param(*param.get_elem(1));
    *this = BVCI_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.BVCI");
  }
  is_ifpresent = param.get_ifpresent();
}

void BVCI_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVCI");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVCI");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVCI");
single_value->field_unstructured__value.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVCI");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.BVCI");
}

boolean BVCI_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean BVCI_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

BVC__Measurement::BVC__Measurement()
{
}

BVC__Measurement::BVC__Measurement(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_delay__Value)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_delay__Value(par_delay__Value)
{
}

BVC__Measurement::BVC__Measurement(const BVC__Measurement& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.BVC_Measurement.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.delay__Value().is_bound()) field_delay__Value = other_value.delay__Value();
else field_delay__Value.clean_up();
}

void BVC__Measurement::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_delay__Value.clean_up();
}

const TTCN_Typedescriptor_t* BVC__Measurement::get_descriptor() const { return &BVC__Measurement_descr_; }
BVC__Measurement& BVC__Measurement::operator=(const BVC__Measurement& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.BVC_Measurement.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.delay__Value().is_bound()) field_delay__Value = other_value.delay__Value();
  else field_delay__Value.clean_up();
}
return *this;
}

boolean BVC__Measurement::operator==(const BVC__Measurement& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_delay__Value==other_value.field_delay__Value;
}

boolean BVC__Measurement::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_delay__Value.is_bound());
}
boolean BVC__Measurement::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_delay__Value.is_value();
}
void BVC__Measurement::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", delay_Value := ");
field_delay__Value.log();
TTCN_Logger::log_event_str(" }");
}

void BVC__Measurement::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (delay__Value().is_bound()) delay__Value().set_implicit_omit();
}

void BVC__Measurement::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.BVC_Measurement has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) delay__Value().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "delay_Value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          delay__Value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.BVC_Measurement: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.BVC_Measurement");
  }
}

void BVC__Measurement::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_delay__Value.encode_text(text_buf);
}

void BVC__Measurement::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_delay__Value.decode_text(text_buf);
}

void BVC__Measurement::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void BVC__Measurement::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int BVC__Measurement::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, BVC__Measurement_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(BVC__Measurement_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, BVC__Measurement_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(BVC__Measurement_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT2_descr_.raw->forceomit);
  decoded_field_length = field_delay__Value.RAW_decode(General__Types::OCT2_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_37) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int BVC__Measurement::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BVC__Measurement_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BVC__Measurement_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(BVC__Measurement_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(BVC__Measurement_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_delay__Value.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(BVC__Measurement_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(BVC__Measurement_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_37) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_37.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct BVC__Measurement_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_delay__Value;
};

void BVC__Measurement_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_delay__Value = ANY_VALUE;
}
}
}

void BVC__Measurement_template::copy_value(const BVC__Measurement& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.delay__Value().is_bound()) {
  single_value->field_delay__Value = other_value.delay__Value();
} else {
  single_value->field_delay__Value.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void BVC__Measurement_template::copy_template(const BVC__Measurement_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.delay__Value().get_selection()) {
single_value->field_delay__Value = other_value.delay__Value();
} else {
single_value->field_delay__Value.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new BVC__Measurement_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new BVC__Measurement_template(*other_value.implication_.precondition);
implication_.implied_template = new BVC__Measurement_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.BVC_Measurement.");
break;
}
set_selection(other_value);
}

BVC__Measurement_template::BVC__Measurement_template()
{
}

BVC__Measurement_template::BVC__Measurement_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

BVC__Measurement_template::BVC__Measurement_template(const BVC__Measurement& other_value)
{
copy_value(other_value);
}

BVC__Measurement_template::BVC__Measurement_template(const OPTIONAL<BVC__Measurement>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const BVC__Measurement&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.BVC_Measurement from an unbound optional field.");
}
}

BVC__Measurement_template::BVC__Measurement_template(BVC__Measurement_template* p_precondition, BVC__Measurement_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

BVC__Measurement_template::BVC__Measurement_template(Dynamic_Match_Interface<BVC__Measurement>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<BVC__Measurement>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

BVC__Measurement_template::BVC__Measurement_template(const BVC__Measurement_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

BVC__Measurement_template::~BVC__Measurement_template()
{
clean_up();
}

BVC__Measurement_template& BVC__Measurement_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

BVC__Measurement_template& BVC__Measurement_template::operator=(const BVC__Measurement& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

BVC__Measurement_template& BVC__Measurement_template::operator=(const OPTIONAL<BVC__Measurement>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const BVC__Measurement&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.BVC_Measurement.");
}
return *this;
}

BVC__Measurement_template& BVC__Measurement_template::operator=(const BVC__Measurement_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean BVC__Measurement_template::match(const BVC__Measurement& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.delay__Value().is_bound()) return FALSE;
if(!single_value->field_delay__Value.match(other_value.delay__Value(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.BVC_Measurement.");
}
return FALSE;
}

boolean BVC__Measurement_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_delay__Value.is_bound();
}

boolean BVC__Measurement_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_delay__Value.is_value();
}

void BVC__Measurement_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

BVC__Measurement BVC__Measurement_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.BVC_Measurement.");
BVC__Measurement ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_delay__Value.is_bound()) {
ret_val.delay__Value() = single_value->field_delay__Value.valueof();
}
return ret_val;
}

void BVC__Measurement_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.BVC_Measurement.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new BVC__Measurement_template[list_length];
}

BVC__Measurement_template& BVC__Measurement_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.BVC_Measurement.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.BVC_Measurement.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& BVC__Measurement_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& BVC__Measurement_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.BVC_Measurement.");
return single_value->field_iEI;
}

BITSTRING_template& BVC__Measurement_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& BVC__Measurement_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.BVC_Measurement.");
return single_value->field_ext;
}

LIN2__2a_template& BVC__Measurement_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& BVC__Measurement_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.BVC_Measurement.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& BVC__Measurement_template::delay__Value()
{
set_specific();
return single_value->field_delay__Value;
}

const OCTETSTRING_template& BVC__Measurement_template::delay__Value() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field delay_Value of a non-specific template of type @BSSGP_Types.BVC_Measurement.");
return single_value->field_delay__Value;
}

int BVC__Measurement_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Measurement which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Measurement containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Measurement containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Measurement containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Measurement containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Measurement containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Measurement containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Measurement containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.BVC_Measurement containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.BVC_Measurement.");
  }
  return 0;
}

void BVC__Measurement_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", delay_Value := ");
single_value->field_delay__Value.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void BVC__Measurement_template::log_match(const BVC__Measurement& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_delay__Value.match(match_value.delay__Value(), legacy)){
TTCN_Logger::log_logmatch_info(".delay_Value");
single_value->field_delay__Value.log_match(match_value.delay__Value(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", delay_Value := ");
single_value->field_delay__Value.log_match(match_value.delay__Value(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void BVC__Measurement_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (delay__Value().is_bound()) delay__Value().set_implicit_omit();
}

void BVC__Measurement_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_delay__Value.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.BVC_Measurement.");
}
}

void BVC__Measurement_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_delay__Value.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new BVC__Measurement_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.BVC_Measurement.");
}
}

void BVC__Measurement_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    BVC__Measurement_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.BVC_Measurement has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) delay__Value().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "delay_Value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          delay__Value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.BVC_Measurement: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    BVC__Measurement_template* precondition = new BVC__Measurement_template;
    precondition->set_param(*param.get_elem(0));
    BVC__Measurement_template* implied_template = new BVC__Measurement_template;
    implied_template->set_param(*param.get_elem(1));
    *this = BVC__Measurement_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.BVC_Measurement");
  }
  is_ifpresent = param.get_ifpresent();
}

void BVC__Measurement_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVC_Measurement");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVC_Measurement");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVC_Measurement");
single_value->field_delay__Value.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.BVC_Measurement");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.BVC_Measurement");
}

boolean BVC__Measurement_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean BVC__Measurement_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

Cause__BSSGP::Cause__BSSGP()
{
}

Cause__BSSGP::Cause__BSSGP(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_cause__Value)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_cause__Value(par_cause__Value)
{
}

Cause__BSSGP::Cause__BSSGP(const Cause__BSSGP& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.Cause_BSSGP.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.cause__Value().is_bound()) field_cause__Value = other_value.cause__Value();
else field_cause__Value.clean_up();
}

void Cause__BSSGP::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_cause__Value.clean_up();
}

const TTCN_Typedescriptor_t* Cause__BSSGP::get_descriptor() const { return &Cause__BSSGP_descr_; }
Cause__BSSGP& Cause__BSSGP::operator=(const Cause__BSSGP& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.Cause_BSSGP.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.cause__Value().is_bound()) field_cause__Value = other_value.cause__Value();
  else field_cause__Value.clean_up();
}
return *this;
}

boolean Cause__BSSGP::operator==(const Cause__BSSGP& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_cause__Value==other_value.field_cause__Value;
}

boolean Cause__BSSGP::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_cause__Value.is_bound());
}
boolean Cause__BSSGP::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_cause__Value.is_value();
}
void Cause__BSSGP::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", cause_Value := ");
field_cause__Value.log();
TTCN_Logger::log_event_str(" }");
}

void Cause__BSSGP::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (cause__Value().is_bound()) cause__Value().set_implicit_omit();
}

void Cause__BSSGP::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.Cause_BSSGP has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) cause__Value().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "cause_Value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          cause__Value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Cause_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.Cause_BSSGP");
  }
}

void Cause__BSSGP::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_cause__Value.encode_text(text_buf);
}

void Cause__BSSGP::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_cause__Value.decode_text(text_buf);
}

void Cause__BSSGP::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void Cause__BSSGP::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int Cause__BSSGP::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, Cause__BSSGP_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(Cause__BSSGP_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, Cause__BSSGP_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(Cause__BSSGP_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_cause__Value.RAW_decode(General__Types::OCT1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_41) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int Cause__BSSGP::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Cause__BSSGP_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Cause__BSSGP_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT1_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(Cause__BSSGP_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(Cause__BSSGP_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_cause__Value.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(Cause__BSSGP_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(Cause__BSSGP_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_41) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_41.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct Cause__BSSGP_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_cause__Value;
};

void Cause__BSSGP_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_cause__Value = ANY_VALUE;
}
}
}

void Cause__BSSGP_template::copy_value(const Cause__BSSGP& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.cause__Value().is_bound()) {
  single_value->field_cause__Value = other_value.cause__Value();
} else {
  single_value->field_cause__Value.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void Cause__BSSGP_template::copy_template(const Cause__BSSGP_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.cause__Value().get_selection()) {
single_value->field_cause__Value = other_value.cause__Value();
} else {
single_value->field_cause__Value.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new Cause__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new Cause__BSSGP_template(*other_value.implication_.precondition);
implication_.implied_template = new Cause__BSSGP_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.Cause_BSSGP.");
break;
}
set_selection(other_value);
}

Cause__BSSGP_template::Cause__BSSGP_template()
{
}

Cause__BSSGP_template::Cause__BSSGP_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

Cause__BSSGP_template::Cause__BSSGP_template(const Cause__BSSGP& other_value)
{
copy_value(other_value);
}

Cause__BSSGP_template::Cause__BSSGP_template(const OPTIONAL<Cause__BSSGP>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Cause__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.Cause_BSSGP from an unbound optional field.");
}
}

Cause__BSSGP_template::Cause__BSSGP_template(Cause__BSSGP_template* p_precondition, Cause__BSSGP_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

Cause__BSSGP_template::Cause__BSSGP_template(Dynamic_Match_Interface<Cause__BSSGP>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<Cause__BSSGP>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

Cause__BSSGP_template::Cause__BSSGP_template(const Cause__BSSGP_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

Cause__BSSGP_template::~Cause__BSSGP_template()
{
clean_up();
}

Cause__BSSGP_template& Cause__BSSGP_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

Cause__BSSGP_template& Cause__BSSGP_template::operator=(const Cause__BSSGP& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

Cause__BSSGP_template& Cause__BSSGP_template::operator=(const OPTIONAL<Cause__BSSGP>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Cause__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.Cause_BSSGP.");
}
return *this;
}

Cause__BSSGP_template& Cause__BSSGP_template::operator=(const Cause__BSSGP_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean Cause__BSSGP_template::match(const Cause__BSSGP& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.cause__Value().is_bound()) return FALSE;
if(!single_value->field_cause__Value.match(other_value.cause__Value(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.Cause_BSSGP.");
}
return FALSE;
}

boolean Cause__BSSGP_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_cause__Value.is_bound();
}

boolean Cause__BSSGP_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_cause__Value.is_value();
}

void Cause__BSSGP_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

Cause__BSSGP Cause__BSSGP_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.Cause_BSSGP.");
Cause__BSSGP ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_cause__Value.is_bound()) {
ret_val.cause__Value() = single_value->field_cause__Value.valueof();
}
return ret_val;
}

void Cause__BSSGP_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.Cause_BSSGP.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new Cause__BSSGP_template[list_length];
}

Cause__BSSGP_template& Cause__BSSGP_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.Cause_BSSGP.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.Cause_BSSGP.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& Cause__BSSGP_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& Cause__BSSGP_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.Cause_BSSGP.");
return single_value->field_iEI;
}

BITSTRING_template& Cause__BSSGP_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& Cause__BSSGP_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.Cause_BSSGP.");
return single_value->field_ext;
}

LIN2__2a_template& Cause__BSSGP_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& Cause__BSSGP_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.Cause_BSSGP.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& Cause__BSSGP_template::cause__Value()
{
set_specific();
return single_value->field_cause__Value;
}

const OCTETSTRING_template& Cause__BSSGP_template::cause__Value() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field cause_Value of a non-specific template of type @BSSGP_Types.Cause_BSSGP.");
return single_value->field_cause__Value;
}

int Cause__BSSGP_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cause_BSSGP which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.Cause_BSSGP containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cause_BSSGP containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cause_BSSGP containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cause_BSSGP containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cause_BSSGP containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cause_BSSGP containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cause_BSSGP containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cause_BSSGP containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.Cause_BSSGP.");
  }
  return 0;
}

void Cause__BSSGP_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", cause_Value := ");
single_value->field_cause__Value.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void Cause__BSSGP_template::log_match(const Cause__BSSGP& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_cause__Value.match(match_value.cause__Value(), legacy)){
TTCN_Logger::log_logmatch_info(".cause_Value");
single_value->field_cause__Value.log_match(match_value.cause__Value(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", cause_Value := ");
single_value->field_cause__Value.log_match(match_value.cause__Value(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void Cause__BSSGP_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (cause__Value().is_bound()) cause__Value().set_implicit_omit();
}

void Cause__BSSGP_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_cause__Value.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.Cause_BSSGP.");
}
}

void Cause__BSSGP_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_cause__Value.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new Cause__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.Cause_BSSGP.");
}
}

void Cause__BSSGP_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    Cause__BSSGP_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.Cause_BSSGP has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) cause__Value().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "cause_Value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          cause__Value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Cause_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    Cause__BSSGP_template* precondition = new Cause__BSSGP_template;
    precondition->set_param(*param.get_elem(0));
    Cause__BSSGP_template* implied_template = new Cause__BSSGP_template;
    implied_template->set_param(*param.get_elem(1));
    *this = Cause__BSSGP_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.Cause_BSSGP");
  }
  is_ifpresent = param.get_ifpresent();
}

void Cause__BSSGP_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cause_BSSGP");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cause_BSSGP");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cause_BSSGP");
single_value->field_cause__Value.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cause_BSSGP");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.Cause_BSSGP");
}

boolean Cause__BSSGP_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean Cause__BSSGP_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

Cell__Identifier::Cell__Identifier()
{
}

Cell__Identifier::Cell__Identifier(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const HEXSTRING& par_mccDigit1,
    const HEXSTRING& par_mccDigit2,
    const HEXSTRING& par_mccDigit3,
    const HEXSTRING& par_mncDigit3,
    const HEXSTRING& par_mncDigit1,
    const HEXSTRING& par_mncDigit2,
    const OCTETSTRING& par_lac,
    const OCTETSTRING& par_rac,
    const OCTETSTRING& par_cI__value)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_mccDigit1(par_mccDigit1),
  field_mccDigit2(par_mccDigit2),
  field_mccDigit3(par_mccDigit3),
  field_mncDigit3(par_mncDigit3),
  field_mncDigit1(par_mncDigit1),
  field_mncDigit2(par_mncDigit2),
  field_lac(par_lac),
  field_rac(par_rac),
  field_cI__value(par_cI__value)
{
}

Cell__Identifier::Cell__Identifier(const Cell__Identifier& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.Cell_Identifier.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.mccDigit1().is_bound()) field_mccDigit1 = other_value.mccDigit1();
else field_mccDigit1.clean_up();
if (other_value.mccDigit2().is_bound()) field_mccDigit2 = other_value.mccDigit2();
else field_mccDigit2.clean_up();
if (other_value.mccDigit3().is_bound()) field_mccDigit3 = other_value.mccDigit3();
else field_mccDigit3.clean_up();
if (other_value.mncDigit3().is_bound()) field_mncDigit3 = other_value.mncDigit3();
else field_mncDigit3.clean_up();
if (other_value.mncDigit1().is_bound()) field_mncDigit1 = other_value.mncDigit1();
else field_mncDigit1.clean_up();
if (other_value.mncDigit2().is_bound()) field_mncDigit2 = other_value.mncDigit2();
else field_mncDigit2.clean_up();
if (other_value.lac().is_bound()) field_lac = other_value.lac();
else field_lac.clean_up();
if (other_value.rac().is_bound()) field_rac = other_value.rac();
else field_rac.clean_up();
if (other_value.cI__value().is_bound()) field_cI__value = other_value.cI__value();
else field_cI__value.clean_up();
}

void Cell__Identifier::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_mccDigit1.clean_up();
field_mccDigit2.clean_up();
field_mccDigit3.clean_up();
field_mncDigit3.clean_up();
field_mncDigit1.clean_up();
field_mncDigit2.clean_up();
field_lac.clean_up();
field_rac.clean_up();
field_cI__value.clean_up();
}

const TTCN_Typedescriptor_t* Cell__Identifier::get_descriptor() const { return &Cell__Identifier_descr_; }
Cell__Identifier& Cell__Identifier::operator=(const Cell__Identifier& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.Cell_Identifier.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.mccDigit1().is_bound()) field_mccDigit1 = other_value.mccDigit1();
  else field_mccDigit1.clean_up();
  if (other_value.mccDigit2().is_bound()) field_mccDigit2 = other_value.mccDigit2();
  else field_mccDigit2.clean_up();
  if (other_value.mccDigit3().is_bound()) field_mccDigit3 = other_value.mccDigit3();
  else field_mccDigit3.clean_up();
  if (other_value.mncDigit3().is_bound()) field_mncDigit3 = other_value.mncDigit3();
  else field_mncDigit3.clean_up();
  if (other_value.mncDigit1().is_bound()) field_mncDigit1 = other_value.mncDigit1();
  else field_mncDigit1.clean_up();
  if (other_value.mncDigit2().is_bound()) field_mncDigit2 = other_value.mncDigit2();
  else field_mncDigit2.clean_up();
  if (other_value.lac().is_bound()) field_lac = other_value.lac();
  else field_lac.clean_up();
  if (other_value.rac().is_bound()) field_rac = other_value.rac();
  else field_rac.clean_up();
  if (other_value.cI__value().is_bound()) field_cI__value = other_value.cI__value();
  else field_cI__value.clean_up();
}
return *this;
}

boolean Cell__Identifier::operator==(const Cell__Identifier& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_mccDigit1==other_value.field_mccDigit1
  && field_mccDigit2==other_value.field_mccDigit2
  && field_mccDigit3==other_value.field_mccDigit3
  && field_mncDigit3==other_value.field_mncDigit3
  && field_mncDigit1==other_value.field_mncDigit1
  && field_mncDigit2==other_value.field_mncDigit2
  && field_lac==other_value.field_lac
  && field_rac==other_value.field_rac
  && field_cI__value==other_value.field_cI__value;
}

boolean Cell__Identifier::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_mccDigit1.is_bound())
  || (field_mccDigit2.is_bound())
  || (field_mccDigit3.is_bound())
  || (field_mncDigit3.is_bound())
  || (field_mncDigit1.is_bound())
  || (field_mncDigit2.is_bound())
  || (field_lac.is_bound())
  || (field_rac.is_bound())
  || (field_cI__value.is_bound());
}
boolean Cell__Identifier::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_mccDigit1.is_value()
  && field_mccDigit2.is_value()
  && field_mccDigit3.is_value()
  && field_mncDigit3.is_value()
  && field_mncDigit1.is_value()
  && field_mncDigit2.is_value()
  && field_lac.is_value()
  && field_rac.is_value()
  && field_cI__value.is_value();
}
void Cell__Identifier::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", mccDigit1 := ");
field_mccDigit1.log();
TTCN_Logger::log_event_str(", mccDigit2 := ");
field_mccDigit2.log();
TTCN_Logger::log_event_str(", mccDigit3 := ");
field_mccDigit3.log();
TTCN_Logger::log_event_str(", mncDigit3 := ");
field_mncDigit3.log();
TTCN_Logger::log_event_str(", mncDigit1 := ");
field_mncDigit1.log();
TTCN_Logger::log_event_str(", mncDigit2 := ");
field_mncDigit2.log();
TTCN_Logger::log_event_str(", lac := ");
field_lac.log();
TTCN_Logger::log_event_str(", rac := ");
field_rac.log();
TTCN_Logger::log_event_str(", cI_value := ");
field_cI__value.log();
TTCN_Logger::log_event_str(" }");
}

void Cell__Identifier::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (mccDigit1().is_bound()) mccDigit1().set_implicit_omit();
if (mccDigit2().is_bound()) mccDigit2().set_implicit_omit();
if (mccDigit3().is_bound()) mccDigit3().set_implicit_omit();
if (mncDigit3().is_bound()) mncDigit3().set_implicit_omit();
if (mncDigit1().is_bound()) mncDigit1().set_implicit_omit();
if (mncDigit2().is_bound()) mncDigit2().set_implicit_omit();
if (lac().is_bound()) lac().set_implicit_omit();
if (rac().is_bound()) rac().set_implicit_omit();
if (cI__value().is_bound()) cI__value().set_implicit_omit();
}

void Cell__Identifier::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (12<param.get_size()) {
      param.error("record value of type @BSSGP_Types.Cell_Identifier has 12 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) mccDigit1().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) mccDigit2().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) mccDigit3().set_param(*param.get_elem(5));
    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) mncDigit3().set_param(*param.get_elem(6));
    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) mncDigit1().set_param(*param.get_elem(7));
    if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) mncDigit2().set_param(*param.get_elem(8));
    if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) lac().set_param(*param.get_elem(9));
    if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) rac().set_param(*param.get_elem(10));
    if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) cI__value().set_param(*param.get_elem(11));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lac")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lac().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rac")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rac().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "cI_value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          cI__value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Cell_Identifier: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.Cell_Identifier");
  }
}

void Cell__Identifier::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_mccDigit1.encode_text(text_buf);
field_mccDigit2.encode_text(text_buf);
field_mccDigit3.encode_text(text_buf);
field_mncDigit3.encode_text(text_buf);
field_mncDigit1.encode_text(text_buf);
field_mncDigit2.encode_text(text_buf);
field_lac.encode_text(text_buf);
field_rac.encode_text(text_buf);
field_cI__value.encode_text(text_buf);
}

void Cell__Identifier::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_mccDigit1.decode_text(text_buf);
field_mccDigit2.decode_text(text_buf);
field_mccDigit3.decode_text(text_buf);
field_mncDigit3.decode_text(text_buf);
field_mncDigit1.decode_text(text_buf);
field_mncDigit2.decode_text(text_buf);
field_lac.decode_text(text_buf);
field_rac.decode_text(text_buf);
field_cI__value.decode_text(text_buf);
}

void Cell__Identifier::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void Cell__Identifier::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int Cell__Identifier::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, Cell__Identifier_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(Cell__Identifier_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, Cell__Identifier_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(Cell__Identifier_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mccDigit1.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_4_force_omit(4, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mccDigit2.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_4_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_5_force_omit(5, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mccDigit3.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_5_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_6_force_omit(6, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mncDigit3.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_6_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_7_force_omit(7, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mncDigit1.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_7_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_8_force_omit(8, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mncDigit2.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_8_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_9_force_omit(9, force_omit, General__Types::OCT2_descr_.raw->forceomit);
  decoded_field_length = field_lac.RAW_decode(General__Types::OCT2_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_9_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_10_force_omit(10, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_rac.RAW_decode(General__Types::OCT1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_10_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_11_force_omit(11, force_omit, General__Types::OCT2_descr_.raw->forceomit);
  decoded_field_length = field_cI__value.RAW_decode(General__Types::OCT2_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_11_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_21) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int Cell__Identifier::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 12;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(12);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Cell__Identifier_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Cell__Identifier_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, General__Types::OCT2_descr_.raw);
  myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 10, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 11, General__Types::OCT2_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(Cell__Identifier_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(Cell__Identifier_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_mccDigit1.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[3]);
  encoded_length += field_mccDigit2.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[4]);
  encoded_length += field_mccDigit3.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[5]);
  encoded_length += field_mncDigit3.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[6]);
  encoded_length += field_mncDigit1.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[7]);
  encoded_length += field_mncDigit2.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[8]);
  encoded_length += field_lac.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[9]);
  encoded_length += field_rac.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[10]);
  encoded_length += field_cI__value.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[11]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 9;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(9);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[1].level = myleaf.body.node.nodes[4]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[1].pos = myleaf.body.node.nodes[4]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[2].level = myleaf.body.node.nodes[5]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[2].pos = myleaf.body.node.nodes[5]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[3].level = myleaf.body.node.nodes[6]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[3].pos = myleaf.body.node.nodes[6]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[4].level = myleaf.body.node.nodes[7]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[4].pos = myleaf.body.node.nodes[7]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[5].level = myleaf.body.node.nodes[8]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[5].pos = myleaf.body.node.nodes[8]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[6].level = myleaf.body.node.nodes[9]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[6].pos = myleaf.body.node.nodes[9]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[7].level = myleaf.body.node.nodes[10]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[7].pos = myleaf.body.node.nodes[10]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[8].level = myleaf.body.node.nodes[11]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[8].pos = myleaf.body.node.nodes[11]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(Cell__Identifier_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(Cell__Identifier_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_21) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_21.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct Cell__Identifier_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
HEXSTRING_template field_mccDigit1;
HEXSTRING_template field_mccDigit2;
HEXSTRING_template field_mccDigit3;
HEXSTRING_template field_mncDigit3;
HEXSTRING_template field_mncDigit1;
HEXSTRING_template field_mncDigit2;
OCTETSTRING_template field_lac;
OCTETSTRING_template field_rac;
OCTETSTRING_template field_cI__value;
};

void Cell__Identifier_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_mccDigit1 = ANY_VALUE;
single_value->field_mccDigit2 = ANY_VALUE;
single_value->field_mccDigit3 = ANY_VALUE;
single_value->field_mncDigit3 = ANY_VALUE;
single_value->field_mncDigit1 = ANY_VALUE;
single_value->field_mncDigit2 = ANY_VALUE;
single_value->field_lac = ANY_VALUE;
single_value->field_rac = ANY_VALUE;
single_value->field_cI__value = ANY_VALUE;
}
}
}

void Cell__Identifier_template::copy_value(const Cell__Identifier& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.mccDigit1().is_bound()) {
  single_value->field_mccDigit1 = other_value.mccDigit1();
} else {
  single_value->field_mccDigit1.clean_up();
}
if (other_value.mccDigit2().is_bound()) {
  single_value->field_mccDigit2 = other_value.mccDigit2();
} else {
  single_value->field_mccDigit2.clean_up();
}
if (other_value.mccDigit3().is_bound()) {
  single_value->field_mccDigit3 = other_value.mccDigit3();
} else {
  single_value->field_mccDigit3.clean_up();
}
if (other_value.mncDigit3().is_bound()) {
  single_value->field_mncDigit3 = other_value.mncDigit3();
} else {
  single_value->field_mncDigit3.clean_up();
}
if (other_value.mncDigit1().is_bound()) {
  single_value->field_mncDigit1 = other_value.mncDigit1();
} else {
  single_value->field_mncDigit1.clean_up();
}
if (other_value.mncDigit2().is_bound()) {
  single_value->field_mncDigit2 = other_value.mncDigit2();
} else {
  single_value->field_mncDigit2.clean_up();
}
if (other_value.lac().is_bound()) {
  single_value->field_lac = other_value.lac();
} else {
  single_value->field_lac.clean_up();
}
if (other_value.rac().is_bound()) {
  single_value->field_rac = other_value.rac();
} else {
  single_value->field_rac.clean_up();
}
if (other_value.cI__value().is_bound()) {
  single_value->field_cI__value = other_value.cI__value();
} else {
  single_value->field_cI__value.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void Cell__Identifier_template::copy_template(const Cell__Identifier_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mccDigit1().get_selection()) {
single_value->field_mccDigit1 = other_value.mccDigit1();
} else {
single_value->field_mccDigit1.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mccDigit2().get_selection()) {
single_value->field_mccDigit2 = other_value.mccDigit2();
} else {
single_value->field_mccDigit2.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mccDigit3().get_selection()) {
single_value->field_mccDigit3 = other_value.mccDigit3();
} else {
single_value->field_mccDigit3.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mncDigit3().get_selection()) {
single_value->field_mncDigit3 = other_value.mncDigit3();
} else {
single_value->field_mncDigit3.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mncDigit1().get_selection()) {
single_value->field_mncDigit1 = other_value.mncDigit1();
} else {
single_value->field_mncDigit1.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mncDigit2().get_selection()) {
single_value->field_mncDigit2 = other_value.mncDigit2();
} else {
single_value->field_mncDigit2.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lac().get_selection()) {
single_value->field_lac = other_value.lac();
} else {
single_value->field_lac.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.rac().get_selection()) {
single_value->field_rac = other_value.rac();
} else {
single_value->field_rac.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.cI__value().get_selection()) {
single_value->field_cI__value = other_value.cI__value();
} else {
single_value->field_cI__value.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new Cell__Identifier_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new Cell__Identifier_template(*other_value.implication_.precondition);
implication_.implied_template = new Cell__Identifier_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.Cell_Identifier.");
break;
}
set_selection(other_value);
}

Cell__Identifier_template::Cell__Identifier_template()
{
}

Cell__Identifier_template::Cell__Identifier_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

Cell__Identifier_template::Cell__Identifier_template(const Cell__Identifier& other_value)
{
copy_value(other_value);
}

Cell__Identifier_template::Cell__Identifier_template(const OPTIONAL<Cell__Identifier>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Cell__Identifier&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.Cell_Identifier from an unbound optional field.");
}
}

Cell__Identifier_template::Cell__Identifier_template(Cell__Identifier_template* p_precondition, Cell__Identifier_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

Cell__Identifier_template::Cell__Identifier_template(Dynamic_Match_Interface<Cell__Identifier>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<Cell__Identifier>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

Cell__Identifier_template::Cell__Identifier_template(const Cell__Identifier_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

Cell__Identifier_template::~Cell__Identifier_template()
{
clean_up();
}

Cell__Identifier_template& Cell__Identifier_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

Cell__Identifier_template& Cell__Identifier_template::operator=(const Cell__Identifier& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

Cell__Identifier_template& Cell__Identifier_template::operator=(const OPTIONAL<Cell__Identifier>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Cell__Identifier&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.Cell_Identifier.");
}
return *this;
}

Cell__Identifier_template& Cell__Identifier_template::operator=(const Cell__Identifier_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean Cell__Identifier_template::match(const Cell__Identifier& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.mccDigit1().is_bound()) return FALSE;
if(!single_value->field_mccDigit1.match(other_value.mccDigit1(), legacy))return FALSE;
if(!other_value.mccDigit2().is_bound()) return FALSE;
if(!single_value->field_mccDigit2.match(other_value.mccDigit2(), legacy))return FALSE;
if(!other_value.mccDigit3().is_bound()) return FALSE;
if(!single_value->field_mccDigit3.match(other_value.mccDigit3(), legacy))return FALSE;
if(!other_value.mncDigit3().is_bound()) return FALSE;
if(!single_value->field_mncDigit3.match(other_value.mncDigit3(), legacy))return FALSE;
if(!other_value.mncDigit1().is_bound()) return FALSE;
if(!single_value->field_mncDigit1.match(other_value.mncDigit1(), legacy))return FALSE;
if(!other_value.mncDigit2().is_bound()) return FALSE;
if(!single_value->field_mncDigit2.match(other_value.mncDigit2(), legacy))return FALSE;
if(!other_value.lac().is_bound()) return FALSE;
if(!single_value->field_lac.match(other_value.lac(), legacy))return FALSE;
if(!other_value.rac().is_bound()) return FALSE;
if(!single_value->field_rac.match(other_value.rac(), legacy))return FALSE;
if(!other_value.cI__value().is_bound()) return FALSE;
if(!single_value->field_cI__value.match(other_value.cI__value(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.Cell_Identifier.");
}
return FALSE;
}

boolean Cell__Identifier_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_mccDigit1.is_bound()
 || single_value->field_mccDigit2.is_bound()
 || single_value->field_mccDigit3.is_bound()
 || single_value->field_mncDigit3.is_bound()
 || single_value->field_mncDigit1.is_bound()
 || single_value->field_mncDigit2.is_bound()
 || single_value->field_lac.is_bound()
 || single_value->field_rac.is_bound()
 || single_value->field_cI__value.is_bound();
}

boolean Cell__Identifier_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_mccDigit1.is_value()
 && single_value->field_mccDigit2.is_value()
 && single_value->field_mccDigit3.is_value()
 && single_value->field_mncDigit3.is_value()
 && single_value->field_mncDigit1.is_value()
 && single_value->field_mncDigit2.is_value()
 && single_value->field_lac.is_value()
 && single_value->field_rac.is_value()
 && single_value->field_cI__value.is_value();
}

void Cell__Identifier_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

Cell__Identifier Cell__Identifier_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.Cell_Identifier.");
Cell__Identifier ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_mccDigit1.is_bound()) {
ret_val.mccDigit1() = single_value->field_mccDigit1.valueof();
}
if (single_value->field_mccDigit2.is_bound()) {
ret_val.mccDigit2() = single_value->field_mccDigit2.valueof();
}
if (single_value->field_mccDigit3.is_bound()) {
ret_val.mccDigit3() = single_value->field_mccDigit3.valueof();
}
if (single_value->field_mncDigit3.is_bound()) {
ret_val.mncDigit3() = single_value->field_mncDigit3.valueof();
}
if (single_value->field_mncDigit1.is_bound()) {
ret_val.mncDigit1() = single_value->field_mncDigit1.valueof();
}
if (single_value->field_mncDigit2.is_bound()) {
ret_val.mncDigit2() = single_value->field_mncDigit2.valueof();
}
if (single_value->field_lac.is_bound()) {
ret_val.lac() = single_value->field_lac.valueof();
}
if (single_value->field_rac.is_bound()) {
ret_val.rac() = single_value->field_rac.valueof();
}
if (single_value->field_cI__value.is_bound()) {
ret_val.cI__value() = single_value->field_cI__value.valueof();
}
return ret_val;
}

void Cell__Identifier_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.Cell_Identifier.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new Cell__Identifier_template[list_length];
}

Cell__Identifier_template& Cell__Identifier_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.Cell_Identifier.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.Cell_Identifier.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& Cell__Identifier_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& Cell__Identifier_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_iEI;
}

BITSTRING_template& Cell__Identifier_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& Cell__Identifier_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_ext;
}

LIN2__2a_template& Cell__Identifier_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& Cell__Identifier_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_lengthIndicator;
}

HEXSTRING_template& Cell__Identifier_template::mccDigit1()
{
set_specific();
return single_value->field_mccDigit1;
}

const HEXSTRING_template& Cell__Identifier_template::mccDigit1() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mccDigit1 of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_mccDigit1;
}

HEXSTRING_template& Cell__Identifier_template::mccDigit2()
{
set_specific();
return single_value->field_mccDigit2;
}

const HEXSTRING_template& Cell__Identifier_template::mccDigit2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mccDigit2 of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_mccDigit2;
}

HEXSTRING_template& Cell__Identifier_template::mccDigit3()
{
set_specific();
return single_value->field_mccDigit3;
}

const HEXSTRING_template& Cell__Identifier_template::mccDigit3() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mccDigit3 of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_mccDigit3;
}

HEXSTRING_template& Cell__Identifier_template::mncDigit3()
{
set_specific();
return single_value->field_mncDigit3;
}

const HEXSTRING_template& Cell__Identifier_template::mncDigit3() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mncDigit3 of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_mncDigit3;
}

HEXSTRING_template& Cell__Identifier_template::mncDigit1()
{
set_specific();
return single_value->field_mncDigit1;
}

const HEXSTRING_template& Cell__Identifier_template::mncDigit1() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mncDigit1 of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_mncDigit1;
}

HEXSTRING_template& Cell__Identifier_template::mncDigit2()
{
set_specific();
return single_value->field_mncDigit2;
}

const HEXSTRING_template& Cell__Identifier_template::mncDigit2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mncDigit2 of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_mncDigit2;
}

OCTETSTRING_template& Cell__Identifier_template::lac()
{
set_specific();
return single_value->field_lac;
}

const OCTETSTRING_template& Cell__Identifier_template::lac() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lac of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_lac;
}

OCTETSTRING_template& Cell__Identifier_template::rac()
{
set_specific();
return single_value->field_rac;
}

const OCTETSTRING_template& Cell__Identifier_template::rac() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field rac of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_rac;
}

OCTETSTRING_template& Cell__Identifier_template::cI__value()
{
set_specific();
return single_value->field_cI__value;
}

const OCTETSTRING_template& Cell__Identifier_template::cI__value() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field cI_value of a non-specific template of type @BSSGP_Types.Cell_Identifier.");
return single_value->field_cI__value;
}

int Cell__Identifier_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 12;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.Cell_Identifier.");
  }
  return 0;
}

void Cell__Identifier_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", mccDigit1 := ");
single_value->field_mccDigit1.log();
TTCN_Logger::log_event_str(", mccDigit2 := ");
single_value->field_mccDigit2.log();
TTCN_Logger::log_event_str(", mccDigit3 := ");
single_value->field_mccDigit3.log();
TTCN_Logger::log_event_str(", mncDigit3 := ");
single_value->field_mncDigit3.log();
TTCN_Logger::log_event_str(", mncDigit1 := ");
single_value->field_mncDigit1.log();
TTCN_Logger::log_event_str(", mncDigit2 := ");
single_value->field_mncDigit2.log();
TTCN_Logger::log_event_str(", lac := ");
single_value->field_lac.log();
TTCN_Logger::log_event_str(", rac := ");
single_value->field_rac.log();
TTCN_Logger::log_event_str(", cI_value := ");
single_value->field_cI__value.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void Cell__Identifier_template::log_match(const Cell__Identifier& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mccDigit1.match(match_value.mccDigit1(), legacy)){
TTCN_Logger::log_logmatch_info(".mccDigit1");
single_value->field_mccDigit1.log_match(match_value.mccDigit1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mccDigit2.match(match_value.mccDigit2(), legacy)){
TTCN_Logger::log_logmatch_info(".mccDigit2");
single_value->field_mccDigit2.log_match(match_value.mccDigit2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mccDigit3.match(match_value.mccDigit3(), legacy)){
TTCN_Logger::log_logmatch_info(".mccDigit3");
single_value->field_mccDigit3.log_match(match_value.mccDigit3(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mncDigit3.match(match_value.mncDigit3(), legacy)){
TTCN_Logger::log_logmatch_info(".mncDigit3");
single_value->field_mncDigit3.log_match(match_value.mncDigit3(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mncDigit1.match(match_value.mncDigit1(), legacy)){
TTCN_Logger::log_logmatch_info(".mncDigit1");
single_value->field_mncDigit1.log_match(match_value.mncDigit1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mncDigit2.match(match_value.mncDigit2(), legacy)){
TTCN_Logger::log_logmatch_info(".mncDigit2");
single_value->field_mncDigit2.log_match(match_value.mncDigit2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lac.match(match_value.lac(), legacy)){
TTCN_Logger::log_logmatch_info(".lac");
single_value->field_lac.log_match(match_value.lac(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_rac.match(match_value.rac(), legacy)){
TTCN_Logger::log_logmatch_info(".rac");
single_value->field_rac.log_match(match_value.rac(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_cI__value.match(match_value.cI__value(), legacy)){
TTCN_Logger::log_logmatch_info(".cI_value");
single_value->field_cI__value.log_match(match_value.cI__value(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", mccDigit1 := ");
single_value->field_mccDigit1.log_match(match_value.mccDigit1(), legacy);
TTCN_Logger::log_event_str(", mccDigit2 := ");
single_value->field_mccDigit2.log_match(match_value.mccDigit2(), legacy);
TTCN_Logger::log_event_str(", mccDigit3 := ");
single_value->field_mccDigit3.log_match(match_value.mccDigit3(), legacy);
TTCN_Logger::log_event_str(", mncDigit3 := ");
single_value->field_mncDigit3.log_match(match_value.mncDigit3(), legacy);
TTCN_Logger::log_event_str(", mncDigit1 := ");
single_value->field_mncDigit1.log_match(match_value.mncDigit1(), legacy);
TTCN_Logger::log_event_str(", mncDigit2 := ");
single_value->field_mncDigit2.log_match(match_value.mncDigit2(), legacy);
TTCN_Logger::log_event_str(", lac := ");
single_value->field_lac.log_match(match_value.lac(), legacy);
TTCN_Logger::log_event_str(", rac := ");
single_value->field_rac.log_match(match_value.rac(), legacy);
TTCN_Logger::log_event_str(", cI_value := ");
single_value->field_cI__value.log_match(match_value.cI__value(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void Cell__Identifier_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (mccDigit1().is_bound()) mccDigit1().set_implicit_omit();
if (mccDigit2().is_bound()) mccDigit2().set_implicit_omit();
if (mccDigit3().is_bound()) mccDigit3().set_implicit_omit();
if (mncDigit3().is_bound()) mncDigit3().set_implicit_omit();
if (mncDigit1().is_bound()) mncDigit1().set_implicit_omit();
if (mncDigit2().is_bound()) mncDigit2().set_implicit_omit();
if (lac().is_bound()) lac().set_implicit_omit();
if (rac().is_bound()) rac().set_implicit_omit();
if (cI__value().is_bound()) cI__value().set_implicit_omit();
}

void Cell__Identifier_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_mccDigit1.encode_text(text_buf);
single_value->field_mccDigit2.encode_text(text_buf);
single_value->field_mccDigit3.encode_text(text_buf);
single_value->field_mncDigit3.encode_text(text_buf);
single_value->field_mncDigit1.encode_text(text_buf);
single_value->field_mncDigit2.encode_text(text_buf);
single_value->field_lac.encode_text(text_buf);
single_value->field_rac.encode_text(text_buf);
single_value->field_cI__value.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.Cell_Identifier.");
}
}

void Cell__Identifier_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_mccDigit1.decode_text(text_buf);
single_value->field_mccDigit2.decode_text(text_buf);
single_value->field_mccDigit3.decode_text(text_buf);
single_value->field_mncDigit3.decode_text(text_buf);
single_value->field_mncDigit1.decode_text(text_buf);
single_value->field_mncDigit2.decode_text(text_buf);
single_value->field_lac.decode_text(text_buf);
single_value->field_rac.decode_text(text_buf);
single_value->field_cI__value.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new Cell__Identifier_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.Cell_Identifier.");
}
}

void Cell__Identifier_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    Cell__Identifier_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (12<param.get_size()) {
      param.error("record template of type @BSSGP_Types.Cell_Identifier has 12 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) mccDigit1().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) mccDigit2().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) mccDigit3().set_param(*param.get_elem(5));
    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) mncDigit3().set_param(*param.get_elem(6));
    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) mncDigit1().set_param(*param.get_elem(7));
    if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) mncDigit2().set_param(*param.get_elem(8));
    if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) lac().set_param(*param.get_elem(9));
    if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) rac().set_param(*param.get_elem(10));
    if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) cI__value().set_param(*param.get_elem(11));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lac")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lac().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rac")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rac().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "cI_value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          cI__value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Cell_Identifier: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    Cell__Identifier_template* precondition = new Cell__Identifier_template;
    precondition->set_param(*param.get_elem(0));
    Cell__Identifier_template* implied_template = new Cell__Identifier_template;
    implied_template->set_param(*param.get_elem(1));
    *this = Cell__Identifier_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.Cell_Identifier");
  }
  is_ifpresent = param.get_ifpresent();
}

void Cell__Identifier_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_mccDigit1.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_mccDigit2.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_mccDigit3.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_mncDigit3.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_mncDigit1.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_mncDigit2.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_lac.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_rac.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
single_value->field_cI__value.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.Cell_Identifier");
}

boolean Cell__Identifier_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean Cell__Identifier_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

Cell__Identifier__V::Cell__Identifier__V()
{
}

Cell__Identifier__V::Cell__Identifier__V(const HEXSTRING& par_mccDigit1,
    const HEXSTRING& par_mccDigit2,
    const HEXSTRING& par_mccDigit3,
    const HEXSTRING& par_mncDigit3,
    const HEXSTRING& par_mncDigit1,
    const HEXSTRING& par_mncDigit2,
    const OCTETSTRING& par_lac,
    const OCTETSTRING& par_rac,
    const OCTETSTRING& par_cI__value)
  :   field_mccDigit1(par_mccDigit1),
  field_mccDigit2(par_mccDigit2),
  field_mccDigit3(par_mccDigit3),
  field_mncDigit3(par_mncDigit3),
  field_mncDigit1(par_mncDigit1),
  field_mncDigit2(par_mncDigit2),
  field_lac(par_lac),
  field_rac(par_rac),
  field_cI__value(par_cI__value)
{
}

Cell__Identifier__V::Cell__Identifier__V(const Cell__Identifier__V& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.Cell_Identifier_V.");
if (other_value.mccDigit1().is_bound()) field_mccDigit1 = other_value.mccDigit1();
else field_mccDigit1.clean_up();
if (other_value.mccDigit2().is_bound()) field_mccDigit2 = other_value.mccDigit2();
else field_mccDigit2.clean_up();
if (other_value.mccDigit3().is_bound()) field_mccDigit3 = other_value.mccDigit3();
else field_mccDigit3.clean_up();
if (other_value.mncDigit3().is_bound()) field_mncDigit3 = other_value.mncDigit3();
else field_mncDigit3.clean_up();
if (other_value.mncDigit1().is_bound()) field_mncDigit1 = other_value.mncDigit1();
else field_mncDigit1.clean_up();
if (other_value.mncDigit2().is_bound()) field_mncDigit2 = other_value.mncDigit2();
else field_mncDigit2.clean_up();
if (other_value.lac().is_bound()) field_lac = other_value.lac();
else field_lac.clean_up();
if (other_value.rac().is_bound()) field_rac = other_value.rac();
else field_rac.clean_up();
if (other_value.cI__value().is_bound()) field_cI__value = other_value.cI__value();
else field_cI__value.clean_up();
}

void Cell__Identifier__V::clean_up()
{
field_mccDigit1.clean_up();
field_mccDigit2.clean_up();
field_mccDigit3.clean_up();
field_mncDigit3.clean_up();
field_mncDigit1.clean_up();
field_mncDigit2.clean_up();
field_lac.clean_up();
field_rac.clean_up();
field_cI__value.clean_up();
}

const TTCN_Typedescriptor_t* Cell__Identifier__V::get_descriptor() const { return &Cell__Identifier__V_descr_; }
Cell__Identifier__V& Cell__Identifier__V::operator=(const Cell__Identifier__V& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.Cell_Identifier_V.");
  if (other_value.mccDigit1().is_bound()) field_mccDigit1 = other_value.mccDigit1();
  else field_mccDigit1.clean_up();
  if (other_value.mccDigit2().is_bound()) field_mccDigit2 = other_value.mccDigit2();
  else field_mccDigit2.clean_up();
  if (other_value.mccDigit3().is_bound()) field_mccDigit3 = other_value.mccDigit3();
  else field_mccDigit3.clean_up();
  if (other_value.mncDigit3().is_bound()) field_mncDigit3 = other_value.mncDigit3();
  else field_mncDigit3.clean_up();
  if (other_value.mncDigit1().is_bound()) field_mncDigit1 = other_value.mncDigit1();
  else field_mncDigit1.clean_up();
  if (other_value.mncDigit2().is_bound()) field_mncDigit2 = other_value.mncDigit2();
  else field_mncDigit2.clean_up();
  if (other_value.lac().is_bound()) field_lac = other_value.lac();
  else field_lac.clean_up();
  if (other_value.rac().is_bound()) field_rac = other_value.rac();
  else field_rac.clean_up();
  if (other_value.cI__value().is_bound()) field_cI__value = other_value.cI__value();
  else field_cI__value.clean_up();
}
return *this;
}

boolean Cell__Identifier__V::operator==(const Cell__Identifier__V& other_value) const
{
return field_mccDigit1==other_value.field_mccDigit1
  && field_mccDigit2==other_value.field_mccDigit2
  && field_mccDigit3==other_value.field_mccDigit3
  && field_mncDigit3==other_value.field_mncDigit3
  && field_mncDigit1==other_value.field_mncDigit1
  && field_mncDigit2==other_value.field_mncDigit2
  && field_lac==other_value.field_lac
  && field_rac==other_value.field_rac
  && field_cI__value==other_value.field_cI__value;
}

boolean Cell__Identifier__V::is_bound() const
{
return (field_mccDigit1.is_bound())
  || (field_mccDigit2.is_bound())
  || (field_mccDigit3.is_bound())
  || (field_mncDigit3.is_bound())
  || (field_mncDigit1.is_bound())
  || (field_mncDigit2.is_bound())
  || (field_lac.is_bound())
  || (field_rac.is_bound())
  || (field_cI__value.is_bound());
}
boolean Cell__Identifier__V::is_value() const
{
return field_mccDigit1.is_value()
  && field_mccDigit2.is_value()
  && field_mccDigit3.is_value()
  && field_mncDigit3.is_value()
  && field_mncDigit1.is_value()
  && field_mncDigit2.is_value()
  && field_lac.is_value()
  && field_rac.is_value()
  && field_cI__value.is_value();
}
void Cell__Identifier__V::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ mccDigit1 := ");
field_mccDigit1.log();
TTCN_Logger::log_event_str(", mccDigit2 := ");
field_mccDigit2.log();
TTCN_Logger::log_event_str(", mccDigit3 := ");
field_mccDigit3.log();
TTCN_Logger::log_event_str(", mncDigit3 := ");
field_mncDigit3.log();
TTCN_Logger::log_event_str(", mncDigit1 := ");
field_mncDigit1.log();
TTCN_Logger::log_event_str(", mncDigit2 := ");
field_mncDigit2.log();
TTCN_Logger::log_event_str(", lac := ");
field_lac.log();
TTCN_Logger::log_event_str(", rac := ");
field_rac.log();
TTCN_Logger::log_event_str(", cI_value := ");
field_cI__value.log();
TTCN_Logger::log_event_str(" }");
}

void Cell__Identifier__V::set_implicit_omit()
{
if (mccDigit1().is_bound()) mccDigit1().set_implicit_omit();
if (mccDigit2().is_bound()) mccDigit2().set_implicit_omit();
if (mccDigit3().is_bound()) mccDigit3().set_implicit_omit();
if (mncDigit3().is_bound()) mncDigit3().set_implicit_omit();
if (mncDigit1().is_bound()) mncDigit1().set_implicit_omit();
if (mncDigit2().is_bound()) mncDigit2().set_implicit_omit();
if (lac().is_bound()) lac().set_implicit_omit();
if (rac().is_bound()) rac().set_implicit_omit();
if (cI__value().is_bound()) cI__value().set_implicit_omit();
}

void Cell__Identifier__V::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (9<param.get_size()) {
      param.error("record value of type @BSSGP_Types.Cell_Identifier_V has 9 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) mccDigit1().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mccDigit2().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) mccDigit3().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) mncDigit3().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) mncDigit1().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) mncDigit2().set_param(*param.get_elem(5));
    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) lac().set_param(*param.get_elem(6));
    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) rac().set_param(*param.get_elem(7));
    if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) cI__value().set_param(*param.get_elem(8));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lac")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lac().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rac")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rac().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "cI_value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          cI__value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Cell_Identifier_V: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.Cell_Identifier_V");
  }
}

void Cell__Identifier__V::encode_text(Text_Buf& text_buf) const
{
field_mccDigit1.encode_text(text_buf);
field_mccDigit2.encode_text(text_buf);
field_mccDigit3.encode_text(text_buf);
field_mncDigit3.encode_text(text_buf);
field_mncDigit1.encode_text(text_buf);
field_mncDigit2.encode_text(text_buf);
field_lac.encode_text(text_buf);
field_rac.encode_text(text_buf);
field_cI__value.encode_text(text_buf);
}

void Cell__Identifier__V::decode_text(Text_Buf& text_buf)
{
field_mccDigit1.decode_text(text_buf);
field_mccDigit2.decode_text(text_buf);
field_mccDigit3.decode_text(text_buf);
field_mncDigit3.decode_text(text_buf);
field_mncDigit1.decode_text(text_buf);
field_mncDigit2.decode_text(text_buf);
field_lac.decode_text(text_buf);
field_rac.decode_text(text_buf);
field_cI__value.decode_text(text_buf);
}

void Cell__Identifier__V::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void Cell__Identifier__V::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int Cell__Identifier__V::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mccDigit1.RAW_decode(General__Types::HEX1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mccDigit2.RAW_decode(General__Types::HEX1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_2_force_omit(2, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mccDigit3.RAW_decode(General__Types::HEX1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mncDigit3.RAW_decode(General__Types::HEX1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_4_force_omit(4, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mncDigit1.RAW_decode(General__Types::HEX1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_4_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_5_force_omit(5, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mncDigit2.RAW_decode(General__Types::HEX1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_5_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_6_force_omit(6, force_omit, General__Types::OCT2_descr_.raw->forceomit);
  decoded_field_length = field_lac.RAW_decode(General__Types::OCT2_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_6_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_7_force_omit(7, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_rac.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_7_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_8_force_omit(8, force_omit, General__Types::OCT2_descr_.raw->forceomit);
  decoded_field_length = field_cI__value.RAW_decode(General__Types::OCT2_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_8_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int Cell__Identifier__V::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 9;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(9);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, General__Types::OCT2_descr_.raw);
  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, General__Types::OCT2_descr_.raw);
  encoded_length += field_mccDigit1.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_mccDigit2.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_mccDigit3.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_mncDigit3.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[3]);
  encoded_length += field_mncDigit1.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[4]);
  encoded_length += field_mncDigit2.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[5]);
  encoded_length += field_lac.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[6]);
  encoded_length += field_rac.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[7]);
  encoded_length += field_cI__value.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[8]);
  return myleaf.length = encoded_length;
}

struct Cell__Identifier__V_template::single_value_struct {
HEXSTRING_template field_mccDigit1;
HEXSTRING_template field_mccDigit2;
HEXSTRING_template field_mccDigit3;
HEXSTRING_template field_mncDigit3;
HEXSTRING_template field_mncDigit1;
HEXSTRING_template field_mncDigit2;
OCTETSTRING_template field_lac;
OCTETSTRING_template field_rac;
OCTETSTRING_template field_cI__value;
};

void Cell__Identifier__V_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_mccDigit1 = ANY_VALUE;
single_value->field_mccDigit2 = ANY_VALUE;
single_value->field_mccDigit3 = ANY_VALUE;
single_value->field_mncDigit3 = ANY_VALUE;
single_value->field_mncDigit1 = ANY_VALUE;
single_value->field_mncDigit2 = ANY_VALUE;
single_value->field_lac = ANY_VALUE;
single_value->field_rac = ANY_VALUE;
single_value->field_cI__value = ANY_VALUE;
}
}
}

void Cell__Identifier__V_template::copy_value(const Cell__Identifier__V& other_value)
{
single_value = new single_value_struct;
if (other_value.mccDigit1().is_bound()) {
  single_value->field_mccDigit1 = other_value.mccDigit1();
} else {
  single_value->field_mccDigit1.clean_up();
}
if (other_value.mccDigit2().is_bound()) {
  single_value->field_mccDigit2 = other_value.mccDigit2();
} else {
  single_value->field_mccDigit2.clean_up();
}
if (other_value.mccDigit3().is_bound()) {
  single_value->field_mccDigit3 = other_value.mccDigit3();
} else {
  single_value->field_mccDigit3.clean_up();
}
if (other_value.mncDigit3().is_bound()) {
  single_value->field_mncDigit3 = other_value.mncDigit3();
} else {
  single_value->field_mncDigit3.clean_up();
}
if (other_value.mncDigit1().is_bound()) {
  single_value->field_mncDigit1 = other_value.mncDigit1();
} else {
  single_value->field_mncDigit1.clean_up();
}
if (other_value.mncDigit2().is_bound()) {
  single_value->field_mncDigit2 = other_value.mncDigit2();
} else {
  single_value->field_mncDigit2.clean_up();
}
if (other_value.lac().is_bound()) {
  single_value->field_lac = other_value.lac();
} else {
  single_value->field_lac.clean_up();
}
if (other_value.rac().is_bound()) {
  single_value->field_rac = other_value.rac();
} else {
  single_value->field_rac.clean_up();
}
if (other_value.cI__value().is_bound()) {
  single_value->field_cI__value = other_value.cI__value();
} else {
  single_value->field_cI__value.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void Cell__Identifier__V_template::copy_template(const Cell__Identifier__V_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.mccDigit1().get_selection()) {
single_value->field_mccDigit1 = other_value.mccDigit1();
} else {
single_value->field_mccDigit1.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mccDigit2().get_selection()) {
single_value->field_mccDigit2 = other_value.mccDigit2();
} else {
single_value->field_mccDigit2.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mccDigit3().get_selection()) {
single_value->field_mccDigit3 = other_value.mccDigit3();
} else {
single_value->field_mccDigit3.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mncDigit3().get_selection()) {
single_value->field_mncDigit3 = other_value.mncDigit3();
} else {
single_value->field_mncDigit3.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mncDigit1().get_selection()) {
single_value->field_mncDigit1 = other_value.mncDigit1();
} else {
single_value->field_mncDigit1.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mncDigit2().get_selection()) {
single_value->field_mncDigit2 = other_value.mncDigit2();
} else {
single_value->field_mncDigit2.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lac().get_selection()) {
single_value->field_lac = other_value.lac();
} else {
single_value->field_lac.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.rac().get_selection()) {
single_value->field_rac = other_value.rac();
} else {
single_value->field_rac.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.cI__value().get_selection()) {
single_value->field_cI__value = other_value.cI__value();
} else {
single_value->field_cI__value.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new Cell__Identifier__V_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new Cell__Identifier__V_template(*other_value.implication_.precondition);
implication_.implied_template = new Cell__Identifier__V_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.Cell_Identifier_V.");
break;
}
set_selection(other_value);
}

Cell__Identifier__V_template::Cell__Identifier__V_template()
{
}

Cell__Identifier__V_template::Cell__Identifier__V_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

Cell__Identifier__V_template::Cell__Identifier__V_template(const Cell__Identifier__V& other_value)
{
copy_value(other_value);
}

Cell__Identifier__V_template::Cell__Identifier__V_template(const OPTIONAL<Cell__Identifier__V>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Cell__Identifier__V&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.Cell_Identifier_V from an unbound optional field.");
}
}

Cell__Identifier__V_template::Cell__Identifier__V_template(Cell__Identifier__V_template* p_precondition, Cell__Identifier__V_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

Cell__Identifier__V_template::Cell__Identifier__V_template(Dynamic_Match_Interface<Cell__Identifier__V>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<Cell__Identifier__V>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

Cell__Identifier__V_template::Cell__Identifier__V_template(const Cell__Identifier__V_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

Cell__Identifier__V_template::~Cell__Identifier__V_template()
{
clean_up();
}

Cell__Identifier__V_template& Cell__Identifier__V_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

Cell__Identifier__V_template& Cell__Identifier__V_template::operator=(const Cell__Identifier__V& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

Cell__Identifier__V_template& Cell__Identifier__V_template::operator=(const OPTIONAL<Cell__Identifier__V>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Cell__Identifier__V&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.Cell_Identifier_V.");
}
return *this;
}

Cell__Identifier__V_template& Cell__Identifier__V_template::operator=(const Cell__Identifier__V_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean Cell__Identifier__V_template::match(const Cell__Identifier__V& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.mccDigit1().is_bound()) return FALSE;
if(!single_value->field_mccDigit1.match(other_value.mccDigit1(), legacy))return FALSE;
if(!other_value.mccDigit2().is_bound()) return FALSE;
if(!single_value->field_mccDigit2.match(other_value.mccDigit2(), legacy))return FALSE;
if(!other_value.mccDigit3().is_bound()) return FALSE;
if(!single_value->field_mccDigit3.match(other_value.mccDigit3(), legacy))return FALSE;
if(!other_value.mncDigit3().is_bound()) return FALSE;
if(!single_value->field_mncDigit3.match(other_value.mncDigit3(), legacy))return FALSE;
if(!other_value.mncDigit1().is_bound()) return FALSE;
if(!single_value->field_mncDigit1.match(other_value.mncDigit1(), legacy))return FALSE;
if(!other_value.mncDigit2().is_bound()) return FALSE;
if(!single_value->field_mncDigit2.match(other_value.mncDigit2(), legacy))return FALSE;
if(!other_value.lac().is_bound()) return FALSE;
if(!single_value->field_lac.match(other_value.lac(), legacy))return FALSE;
if(!other_value.rac().is_bound()) return FALSE;
if(!single_value->field_rac.match(other_value.rac(), legacy))return FALSE;
if(!other_value.cI__value().is_bound()) return FALSE;
if(!single_value->field_cI__value.match(other_value.cI__value(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.Cell_Identifier_V.");
}
return FALSE;
}

boolean Cell__Identifier__V_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_mccDigit1.is_bound()
 || single_value->field_mccDigit2.is_bound()
 || single_value->field_mccDigit3.is_bound()
 || single_value->field_mncDigit3.is_bound()
 || single_value->field_mncDigit1.is_bound()
 || single_value->field_mncDigit2.is_bound()
 || single_value->field_lac.is_bound()
 || single_value->field_rac.is_bound()
 || single_value->field_cI__value.is_bound();
}

boolean Cell__Identifier__V_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_mccDigit1.is_value()
 && single_value->field_mccDigit2.is_value()
 && single_value->field_mccDigit3.is_value()
 && single_value->field_mncDigit3.is_value()
 && single_value->field_mncDigit1.is_value()
 && single_value->field_mncDigit2.is_value()
 && single_value->field_lac.is_value()
 && single_value->field_rac.is_value()
 && single_value->field_cI__value.is_value();
}

void Cell__Identifier__V_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

Cell__Identifier__V Cell__Identifier__V_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.Cell_Identifier_V.");
Cell__Identifier__V ret_val;
if (single_value->field_mccDigit1.is_bound()) {
ret_val.mccDigit1() = single_value->field_mccDigit1.valueof();
}
if (single_value->field_mccDigit2.is_bound()) {
ret_val.mccDigit2() = single_value->field_mccDigit2.valueof();
}
if (single_value->field_mccDigit3.is_bound()) {
ret_val.mccDigit3() = single_value->field_mccDigit3.valueof();
}
if (single_value->field_mncDigit3.is_bound()) {
ret_val.mncDigit3() = single_value->field_mncDigit3.valueof();
}
if (single_value->field_mncDigit1.is_bound()) {
ret_val.mncDigit1() = single_value->field_mncDigit1.valueof();
}
if (single_value->field_mncDigit2.is_bound()) {
ret_val.mncDigit2() = single_value->field_mncDigit2.valueof();
}
if (single_value->field_lac.is_bound()) {
ret_val.lac() = single_value->field_lac.valueof();
}
if (single_value->field_rac.is_bound()) {
ret_val.rac() = single_value->field_rac.valueof();
}
if (single_value->field_cI__value.is_bound()) {
ret_val.cI__value() = single_value->field_cI__value.valueof();
}
return ret_val;
}

void Cell__Identifier__V_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.Cell_Identifier_V.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new Cell__Identifier__V_template[list_length];
}

Cell__Identifier__V_template& Cell__Identifier__V_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.Cell_Identifier_V.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.Cell_Identifier_V.");
return value_list.list_value[list_index];
}

HEXSTRING_template& Cell__Identifier__V_template::mccDigit1()
{
set_specific();
return single_value->field_mccDigit1;
}

const HEXSTRING_template& Cell__Identifier__V_template::mccDigit1() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mccDigit1 of a non-specific template of type @BSSGP_Types.Cell_Identifier_V.");
return single_value->field_mccDigit1;
}

HEXSTRING_template& Cell__Identifier__V_template::mccDigit2()
{
set_specific();
return single_value->field_mccDigit2;
}

const HEXSTRING_template& Cell__Identifier__V_template::mccDigit2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mccDigit2 of a non-specific template of type @BSSGP_Types.Cell_Identifier_V.");
return single_value->field_mccDigit2;
}

HEXSTRING_template& Cell__Identifier__V_template::mccDigit3()
{
set_specific();
return single_value->field_mccDigit3;
}

const HEXSTRING_template& Cell__Identifier__V_template::mccDigit3() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mccDigit3 of a non-specific template of type @BSSGP_Types.Cell_Identifier_V.");
return single_value->field_mccDigit3;
}

HEXSTRING_template& Cell__Identifier__V_template::mncDigit3()
{
set_specific();
return single_value->field_mncDigit3;
}

const HEXSTRING_template& Cell__Identifier__V_template::mncDigit3() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mncDigit3 of a non-specific template of type @BSSGP_Types.Cell_Identifier_V.");
return single_value->field_mncDigit3;
}

HEXSTRING_template& Cell__Identifier__V_template::mncDigit1()
{
set_specific();
return single_value->field_mncDigit1;
}

const HEXSTRING_template& Cell__Identifier__V_template::mncDigit1() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mncDigit1 of a non-specific template of type @BSSGP_Types.Cell_Identifier_V.");
return single_value->field_mncDigit1;
}

HEXSTRING_template& Cell__Identifier__V_template::mncDigit2()
{
set_specific();
return single_value->field_mncDigit2;
}

const HEXSTRING_template& Cell__Identifier__V_template::mncDigit2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mncDigit2 of a non-specific template of type @BSSGP_Types.Cell_Identifier_V.");
return single_value->field_mncDigit2;
}

OCTETSTRING_template& Cell__Identifier__V_template::lac()
{
set_specific();
return single_value->field_lac;
}

const OCTETSTRING_template& Cell__Identifier__V_template::lac() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lac of a non-specific template of type @BSSGP_Types.Cell_Identifier_V.");
return single_value->field_lac;
}

OCTETSTRING_template& Cell__Identifier__V_template::rac()
{
set_specific();
return single_value->field_rac;
}

const OCTETSTRING_template& Cell__Identifier__V_template::rac() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field rac of a non-specific template of type @BSSGP_Types.Cell_Identifier_V.");
return single_value->field_rac;
}

OCTETSTRING_template& Cell__Identifier__V_template::cI__value()
{
set_specific();
return single_value->field_cI__value;
}

const OCTETSTRING_template& Cell__Identifier__V_template::cI__value() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field cI_value of a non-specific template of type @BSSGP_Types.Cell_Identifier_V.");
return single_value->field_cI__value;
}

int Cell__Identifier__V_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier_V which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 9;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier_V containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier_V containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier_V containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier_V containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier_V containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier_V containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier_V containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Cell_Identifier_V containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.Cell_Identifier_V.");
  }
  return 0;
}

void Cell__Identifier__V_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ mccDigit1 := ");
single_value->field_mccDigit1.log();
TTCN_Logger::log_event_str(", mccDigit2 := ");
single_value->field_mccDigit2.log();
TTCN_Logger::log_event_str(", mccDigit3 := ");
single_value->field_mccDigit3.log();
TTCN_Logger::log_event_str(", mncDigit3 := ");
single_value->field_mncDigit3.log();
TTCN_Logger::log_event_str(", mncDigit1 := ");
single_value->field_mncDigit1.log();
TTCN_Logger::log_event_str(", mncDigit2 := ");
single_value->field_mncDigit2.log();
TTCN_Logger::log_event_str(", lac := ");
single_value->field_lac.log();
TTCN_Logger::log_event_str(", rac := ");
single_value->field_rac.log();
TTCN_Logger::log_event_str(", cI_value := ");
single_value->field_cI__value.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void Cell__Identifier__V_template::log_match(const Cell__Identifier__V& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_mccDigit1.match(match_value.mccDigit1(), legacy)){
TTCN_Logger::log_logmatch_info(".mccDigit1");
single_value->field_mccDigit1.log_match(match_value.mccDigit1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mccDigit2.match(match_value.mccDigit2(), legacy)){
TTCN_Logger::log_logmatch_info(".mccDigit2");
single_value->field_mccDigit2.log_match(match_value.mccDigit2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mccDigit3.match(match_value.mccDigit3(), legacy)){
TTCN_Logger::log_logmatch_info(".mccDigit3");
single_value->field_mccDigit3.log_match(match_value.mccDigit3(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mncDigit3.match(match_value.mncDigit3(), legacy)){
TTCN_Logger::log_logmatch_info(".mncDigit3");
single_value->field_mncDigit3.log_match(match_value.mncDigit3(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mncDigit1.match(match_value.mncDigit1(), legacy)){
TTCN_Logger::log_logmatch_info(".mncDigit1");
single_value->field_mncDigit1.log_match(match_value.mncDigit1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mncDigit2.match(match_value.mncDigit2(), legacy)){
TTCN_Logger::log_logmatch_info(".mncDigit2");
single_value->field_mncDigit2.log_match(match_value.mncDigit2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lac.match(match_value.lac(), legacy)){
TTCN_Logger::log_logmatch_info(".lac");
single_value->field_lac.log_match(match_value.lac(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_rac.match(match_value.rac(), legacy)){
TTCN_Logger::log_logmatch_info(".rac");
single_value->field_rac.log_match(match_value.rac(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_cI__value.match(match_value.cI__value(), legacy)){
TTCN_Logger::log_logmatch_info(".cI_value");
single_value->field_cI__value.log_match(match_value.cI__value(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ mccDigit1 := ");
single_value->field_mccDigit1.log_match(match_value.mccDigit1(), legacy);
TTCN_Logger::log_event_str(", mccDigit2 := ");
single_value->field_mccDigit2.log_match(match_value.mccDigit2(), legacy);
TTCN_Logger::log_event_str(", mccDigit3 := ");
single_value->field_mccDigit3.log_match(match_value.mccDigit3(), legacy);
TTCN_Logger::log_event_str(", mncDigit3 := ");
single_value->field_mncDigit3.log_match(match_value.mncDigit3(), legacy);
TTCN_Logger::log_event_str(", mncDigit1 := ");
single_value->field_mncDigit1.log_match(match_value.mncDigit1(), legacy);
TTCN_Logger::log_event_str(", mncDigit2 := ");
single_value->field_mncDigit2.log_match(match_value.mncDigit2(), legacy);
TTCN_Logger::log_event_str(", lac := ");
single_value->field_lac.log_match(match_value.lac(), legacy);
TTCN_Logger::log_event_str(", rac := ");
single_value->field_rac.log_match(match_value.rac(), legacy);
TTCN_Logger::log_event_str(", cI_value := ");
single_value->field_cI__value.log_match(match_value.cI__value(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void Cell__Identifier__V_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (mccDigit1().is_bound()) mccDigit1().set_implicit_omit();
if (mccDigit2().is_bound()) mccDigit2().set_implicit_omit();
if (mccDigit3().is_bound()) mccDigit3().set_implicit_omit();
if (mncDigit3().is_bound()) mncDigit3().set_implicit_omit();
if (mncDigit1().is_bound()) mncDigit1().set_implicit_omit();
if (mncDigit2().is_bound()) mncDigit2().set_implicit_omit();
if (lac().is_bound()) lac().set_implicit_omit();
if (rac().is_bound()) rac().set_implicit_omit();
if (cI__value().is_bound()) cI__value().set_implicit_omit();
}

void Cell__Identifier__V_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_mccDigit1.encode_text(text_buf);
single_value->field_mccDigit2.encode_text(text_buf);
single_value->field_mccDigit3.encode_text(text_buf);
single_value->field_mncDigit3.encode_text(text_buf);
single_value->field_mncDigit1.encode_text(text_buf);
single_value->field_mncDigit2.encode_text(text_buf);
single_value->field_lac.encode_text(text_buf);
single_value->field_rac.encode_text(text_buf);
single_value->field_cI__value.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.Cell_Identifier_V.");
}
}

void Cell__Identifier__V_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_mccDigit1.decode_text(text_buf);
single_value->field_mccDigit2.decode_text(text_buf);
single_value->field_mccDigit3.decode_text(text_buf);
single_value->field_mncDigit3.decode_text(text_buf);
single_value->field_mncDigit1.decode_text(text_buf);
single_value->field_mncDigit2.decode_text(text_buf);
single_value->field_lac.decode_text(text_buf);
single_value->field_rac.decode_text(text_buf);
single_value->field_cI__value.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new Cell__Identifier__V_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.Cell_Identifier_V.");
}
}

void Cell__Identifier__V_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    Cell__Identifier__V_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (9<param.get_size()) {
      param.error("record template of type @BSSGP_Types.Cell_Identifier_V has 9 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) mccDigit1().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) mccDigit2().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) mccDigit3().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) mncDigit3().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) mncDigit1().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) mncDigit2().set_param(*param.get_elem(5));
    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) lac().set_param(*param.get_elem(6));
    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) rac().set_param(*param.get_elem(7));
    if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) cI__value().set_param(*param.get_elem(8));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lac")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lac().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "rac")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          rac().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "cI_value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          cI__value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Cell_Identifier_V: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    Cell__Identifier__V_template* precondition = new Cell__Identifier__V_template;
    precondition->set_param(*param.get_elem(0));
    Cell__Identifier__V_template* implied_template = new Cell__Identifier__V_template;
    implied_template->set_param(*param.get_elem(1));
    *this = Cell__Identifier__V_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.Cell_Identifier_V");
  }
  is_ifpresent = param.get_ifpresent();
}

void Cell__Identifier__V_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_mccDigit1.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier_V");
single_value->field_mccDigit2.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier_V");
single_value->field_mccDigit3.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier_V");
single_value->field_mncDigit3.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier_V");
single_value->field_mncDigit1.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier_V");
single_value->field_mncDigit2.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier_V");
single_value->field_lac.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier_V");
single_value->field_rac.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier_V");
single_value->field_cI__value.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Cell_Identifier_V");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.Cell_Identifier_V");
}

boolean Cell__Identifier__V_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean Cell__Identifier__V_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

Channel__Needed__Value::Channel__Needed__Value()
{
}

Channel__Needed__Value::Channel__Needed__Value(const BITSTRING& par_channel__1,
    const BITSTRING& par_channel__2,
    const BITSTRING& par_channelNeededIEI)
  :   field_channel__1(par_channel__1),
  field_channel__2(par_channel__2),
  field_channelNeededIEI(par_channelNeededIEI)
{
}

Channel__Needed__Value::Channel__Needed__Value(const Channel__Needed__Value& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.Channel_Needed_Value.");
if (other_value.channel__1().is_bound()) field_channel__1 = other_value.channel__1();
else field_channel__1.clean_up();
if (other_value.channel__2().is_bound()) field_channel__2 = other_value.channel__2();
else field_channel__2.clean_up();
if (other_value.channelNeededIEI().is_bound()) field_channelNeededIEI = other_value.channelNeededIEI();
else field_channelNeededIEI.clean_up();
}

void Channel__Needed__Value::clean_up()
{
field_channel__1.clean_up();
field_channel__2.clean_up();
field_channelNeededIEI.clean_up();
}

const TTCN_Typedescriptor_t* Channel__Needed__Value::get_descriptor() const { return &Channel__Needed__Value_descr_; }
Channel__Needed__Value& Channel__Needed__Value::operator=(const Channel__Needed__Value& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.Channel_Needed_Value.");
  if (other_value.channel__1().is_bound()) field_channel__1 = other_value.channel__1();
  else field_channel__1.clean_up();
  if (other_value.channel__2().is_bound()) field_channel__2 = other_value.channel__2();
  else field_channel__2.clean_up();
  if (other_value.channelNeededIEI().is_bound()) field_channelNeededIEI = other_value.channelNeededIEI();
  else field_channelNeededIEI.clean_up();
}
return *this;
}

boolean Channel__Needed__Value::operator==(const Channel__Needed__Value& other_value) const
{
return field_channel__1==other_value.field_channel__1
  && field_channel__2==other_value.field_channel__2
  && field_channelNeededIEI==other_value.field_channelNeededIEI;
}

boolean Channel__Needed__Value::is_bound() const
{
return (field_channel__1.is_bound())
  || (field_channel__2.is_bound())
  || (field_channelNeededIEI.is_bound());
}
boolean Channel__Needed__Value::is_value() const
{
return field_channel__1.is_value()
  && field_channel__2.is_value()
  && field_channelNeededIEI.is_value();
}
void Channel__Needed__Value::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ channel_1 := ");
field_channel__1.log();
TTCN_Logger::log_event_str(", channel_2 := ");
field_channel__2.log();
TTCN_Logger::log_event_str(", channelNeededIEI := ");
field_channelNeededIEI.log();
TTCN_Logger::log_event_str(" }");
}

void Channel__Needed__Value::set_implicit_omit()
{
if (channel__1().is_bound()) channel__1().set_implicit_omit();
if (channel__2().is_bound()) channel__2().set_implicit_omit();
if (channelNeededIEI().is_bound()) channelNeededIEI().set_implicit_omit();
}

void Channel__Needed__Value::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (3<param.get_size()) {
      param.error("record value of type @BSSGP_Types.Channel_Needed_Value has 3 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) channel__1().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) channel__2().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) channelNeededIEI().set_param(*param.get_elem(2));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "channel_1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          channel__1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "channel_2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          channel__2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "channelNeededIEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          channelNeededIEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Channel_Needed_Value: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.Channel_Needed_Value");
  }
}

void Channel__Needed__Value::encode_text(Text_Buf& text_buf) const
{
field_channel__1.encode_text(text_buf);
field_channel__2.encode_text(text_buf);
field_channelNeededIEI.encode_text(text_buf);
}

void Channel__Needed__Value::decode_text(Text_Buf& text_buf)
{
field_channel__1.decode_text(text_buf);
field_channel__2.decode_text(text_buf);
field_channelNeededIEI.decode_text(text_buf);
}

void Channel__Needed__Value::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void Channel__Needed__Value::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int Channel__Needed__Value::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::BIT2_descr_.raw->forceomit);
  decoded_field_length = field_channel__1.RAW_decode(General__Types::BIT2_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, General__Types::BIT2_descr_.raw->forceomit);
  decoded_field_length = field_channel__2.RAW_decode(General__Types::BIT2_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_2_force_omit(2, force_omit, General__Types::BIT4_descr_.raw->forceomit);
  decoded_field_length = field_channelNeededIEI.RAW_decode(General__Types::BIT4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int Channel__Needed__Value::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 3;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(3);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::BIT2_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT2_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT4_descr_.raw);
  encoded_length += field_channel__1.RAW_encode(General__Types::BIT2_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_channel__2.RAW_encode(General__Types::BIT2_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_channelNeededIEI.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[2]);
  return myleaf.length = encoded_length;
}

struct Channel__Needed__Value_template::single_value_struct {
BITSTRING_template field_channel__1;
BITSTRING_template field_channel__2;
BITSTRING_template field_channelNeededIEI;
};

void Channel__Needed__Value_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_channel__1 = ANY_VALUE;
single_value->field_channel__2 = ANY_VALUE;
single_value->field_channelNeededIEI = ANY_VALUE;
}
}
}

void Channel__Needed__Value_template::copy_value(const Channel__Needed__Value& other_value)
{
single_value = new single_value_struct;
if (other_value.channel__1().is_bound()) {
  single_value->field_channel__1 = other_value.channel__1();
} else {
  single_value->field_channel__1.clean_up();
}
if (other_value.channel__2().is_bound()) {
  single_value->field_channel__2 = other_value.channel__2();
} else {
  single_value->field_channel__2.clean_up();
}
if (other_value.channelNeededIEI().is_bound()) {
  single_value->field_channelNeededIEI = other_value.channelNeededIEI();
} else {
  single_value->field_channelNeededIEI.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void Channel__Needed__Value_template::copy_template(const Channel__Needed__Value_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.channel__1().get_selection()) {
single_value->field_channel__1 = other_value.channel__1();
} else {
single_value->field_channel__1.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.channel__2().get_selection()) {
single_value->field_channel__2 = other_value.channel__2();
} else {
single_value->field_channel__2.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.channelNeededIEI().get_selection()) {
single_value->field_channelNeededIEI = other_value.channelNeededIEI();
} else {
single_value->field_channelNeededIEI.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new Channel__Needed__Value_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new Channel__Needed__Value_template(*other_value.implication_.precondition);
implication_.implied_template = new Channel__Needed__Value_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.Channel_Needed_Value.");
break;
}
set_selection(other_value);
}

Channel__Needed__Value_template::Channel__Needed__Value_template()
{
}

Channel__Needed__Value_template::Channel__Needed__Value_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

Channel__Needed__Value_template::Channel__Needed__Value_template(const Channel__Needed__Value& other_value)
{
copy_value(other_value);
}

Channel__Needed__Value_template::Channel__Needed__Value_template(const OPTIONAL<Channel__Needed__Value>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Channel__Needed__Value&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.Channel_Needed_Value from an unbound optional field.");
}
}

Channel__Needed__Value_template::Channel__Needed__Value_template(Channel__Needed__Value_template* p_precondition, Channel__Needed__Value_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

Channel__Needed__Value_template::Channel__Needed__Value_template(Dynamic_Match_Interface<Channel__Needed__Value>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<Channel__Needed__Value>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

Channel__Needed__Value_template::Channel__Needed__Value_template(const Channel__Needed__Value_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

Channel__Needed__Value_template::~Channel__Needed__Value_template()
{
clean_up();
}

Channel__Needed__Value_template& Channel__Needed__Value_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

Channel__Needed__Value_template& Channel__Needed__Value_template::operator=(const Channel__Needed__Value& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

Channel__Needed__Value_template& Channel__Needed__Value_template::operator=(const OPTIONAL<Channel__Needed__Value>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Channel__Needed__Value&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.Channel_Needed_Value.");
}
return *this;
}

Channel__Needed__Value_template& Channel__Needed__Value_template::operator=(const Channel__Needed__Value_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean Channel__Needed__Value_template::match(const Channel__Needed__Value& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.channel__1().is_bound()) return FALSE;
if(!single_value->field_channel__1.match(other_value.channel__1(), legacy))return FALSE;
if(!other_value.channel__2().is_bound()) return FALSE;
if(!single_value->field_channel__2.match(other_value.channel__2(), legacy))return FALSE;
if(!other_value.channelNeededIEI().is_bound()) return FALSE;
if(!single_value->field_channelNeededIEI.match(other_value.channelNeededIEI(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.Channel_Needed_Value.");
}
return FALSE;
}

boolean Channel__Needed__Value_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_channel__1.is_bound()
 || single_value->field_channel__2.is_bound()
 || single_value->field_channelNeededIEI.is_bound();
}

boolean Channel__Needed__Value_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_channel__1.is_value()
 && single_value->field_channel__2.is_value()
 && single_value->field_channelNeededIEI.is_value();
}

void Channel__Needed__Value_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

Channel__Needed__Value Channel__Needed__Value_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.Channel_Needed_Value.");
Channel__Needed__Value ret_val;
if (single_value->field_channel__1.is_bound()) {
ret_val.channel__1() = single_value->field_channel__1.valueof();
}
if (single_value->field_channel__2.is_bound()) {
ret_val.channel__2() = single_value->field_channel__2.valueof();
}
if (single_value->field_channelNeededIEI.is_bound()) {
ret_val.channelNeededIEI() = single_value->field_channelNeededIEI.valueof();
}
return ret_val;
}

void Channel__Needed__Value_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.Channel_Needed_Value.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new Channel__Needed__Value_template[list_length];
}

Channel__Needed__Value_template& Channel__Needed__Value_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.Channel_Needed_Value.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.Channel_Needed_Value.");
return value_list.list_value[list_index];
}

BITSTRING_template& Channel__Needed__Value_template::channel__1()
{
set_specific();
return single_value->field_channel__1;
}

const BITSTRING_template& Channel__Needed__Value_template::channel__1() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field channel_1 of a non-specific template of type @BSSGP_Types.Channel_Needed_Value.");
return single_value->field_channel__1;
}

BITSTRING_template& Channel__Needed__Value_template::channel__2()
{
set_specific();
return single_value->field_channel__2;
}

const BITSTRING_template& Channel__Needed__Value_template::channel__2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field channel_2 of a non-specific template of type @BSSGP_Types.Channel_Needed_Value.");
return single_value->field_channel__2;
}

BITSTRING_template& Channel__Needed__Value_template::channelNeededIEI()
{
set_specific();
return single_value->field_channelNeededIEI;
}

const BITSTRING_template& Channel__Needed__Value_template::channelNeededIEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field channelNeededIEI of a non-specific template of type @BSSGP_Types.Channel_Needed_Value.");
return single_value->field_channelNeededIEI;
}

int Channel__Needed__Value_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_Needed_Value which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 3;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.Channel_Needed_Value containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_Needed_Value containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_Needed_Value containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_Needed_Value containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_Needed_Value containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_Needed_Value containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_Needed_Value containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_Needed_Value containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.Channel_Needed_Value.");
  }
  return 0;
}

void Channel__Needed__Value_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ channel_1 := ");
single_value->field_channel__1.log();
TTCN_Logger::log_event_str(", channel_2 := ");
single_value->field_channel__2.log();
TTCN_Logger::log_event_str(", channelNeededIEI := ");
single_value->field_channelNeededIEI.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void Channel__Needed__Value_template::log_match(const Channel__Needed__Value& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_channel__1.match(match_value.channel__1(), legacy)){
TTCN_Logger::log_logmatch_info(".channel_1");
single_value->field_channel__1.log_match(match_value.channel__1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_channel__2.match(match_value.channel__2(), legacy)){
TTCN_Logger::log_logmatch_info(".channel_2");
single_value->field_channel__2.log_match(match_value.channel__2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_channelNeededIEI.match(match_value.channelNeededIEI(), legacy)){
TTCN_Logger::log_logmatch_info(".channelNeededIEI");
single_value->field_channelNeededIEI.log_match(match_value.channelNeededIEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ channel_1 := ");
single_value->field_channel__1.log_match(match_value.channel__1(), legacy);
TTCN_Logger::log_event_str(", channel_2 := ");
single_value->field_channel__2.log_match(match_value.channel__2(), legacy);
TTCN_Logger::log_event_str(", channelNeededIEI := ");
single_value->field_channelNeededIEI.log_match(match_value.channelNeededIEI(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void Channel__Needed__Value_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (channel__1().is_bound()) channel__1().set_implicit_omit();
if (channel__2().is_bound()) channel__2().set_implicit_omit();
if (channelNeededIEI().is_bound()) channelNeededIEI().set_implicit_omit();
}

void Channel__Needed__Value_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_channel__1.encode_text(text_buf);
single_value->field_channel__2.encode_text(text_buf);
single_value->field_channelNeededIEI.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.Channel_Needed_Value.");
}
}

void Channel__Needed__Value_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_channel__1.decode_text(text_buf);
single_value->field_channel__2.decode_text(text_buf);
single_value->field_channelNeededIEI.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new Channel__Needed__Value_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.Channel_Needed_Value.");
}
}

void Channel__Needed__Value_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    Channel__Needed__Value_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (3<param.get_size()) {
      param.error("record template of type @BSSGP_Types.Channel_Needed_Value has 3 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) channel__1().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) channel__2().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) channelNeededIEI().set_param(*param.get_elem(2));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "channel_1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          channel__1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "channel_2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          channel__2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "channelNeededIEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          channelNeededIEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Channel_Needed_Value: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    Channel__Needed__Value_template* precondition = new Channel__Needed__Value_template;
    precondition->set_param(*param.get_elem(0));
    Channel__Needed__Value_template* implied_template = new Channel__Needed__Value_template;
    implied_template->set_param(*param.get_elem(1));
    *this = Channel__Needed__Value_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.Channel_Needed_Value");
  }
  is_ifpresent = param.get_ifpresent();
}

void Channel__Needed__Value_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_channel__1.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Channel_Needed_Value");
single_value->field_channel__2.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Channel_Needed_Value");
single_value->field_channelNeededIEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Channel_Needed_Value");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.Channel_Needed_Value");
}

boolean Channel__Needed__Value_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean Channel__Needed__Value_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

Channel__needed::Channel__needed()
{
}

Channel__needed::Channel__needed(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const Channel__Needed__Value& par_channel__Needed__Value)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_channel__Needed__Value(par_channel__Needed__Value)
{
}

Channel__needed::Channel__needed(const Channel__needed& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.Channel_needed.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.channel__Needed__Value().is_bound()) field_channel__Needed__Value = other_value.channel__Needed__Value();
else field_channel__Needed__Value.clean_up();
}

void Channel__needed::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_channel__Needed__Value.clean_up();
}

const TTCN_Typedescriptor_t* Channel__needed::get_descriptor() const { return &Channel__needed_descr_; }
Channel__needed& Channel__needed::operator=(const Channel__needed& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.Channel_needed.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.channel__Needed__Value().is_bound()) field_channel__Needed__Value = other_value.channel__Needed__Value();
  else field_channel__Needed__Value.clean_up();
}
return *this;
}

boolean Channel__needed::operator==(const Channel__needed& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_channel__Needed__Value==other_value.field_channel__Needed__Value;
}

boolean Channel__needed::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_channel__Needed__Value.is_bound());
}
boolean Channel__needed::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_channel__Needed__Value.is_value();
}
void Channel__needed::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", channel_Needed_Value := ");
field_channel__Needed__Value.log();
TTCN_Logger::log_event_str(" }");
}

void Channel__needed::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (channel__Needed__Value().is_bound()) channel__Needed__Value().set_implicit_omit();
}

void Channel__needed::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.Channel_needed has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) channel__Needed__Value().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "channel_Needed_Value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          channel__Needed__Value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Channel_needed: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.Channel_needed");
  }
}

void Channel__needed::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_channel__Needed__Value.encode_text(text_buf);
}

void Channel__needed::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_channel__Needed__Value.decode_text(text_buf);
}

void Channel__needed::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void Channel__needed::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int Channel__needed::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, Channel__needed_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(Channel__needed_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, Channel__needed_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(Channel__needed_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, Channel__Needed__Value_descr_.raw->forceomit);
  decoded_field_length = field_channel__Needed__Value.RAW_decode(Channel__Needed__Value_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_38) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int Channel__needed::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Channel__needed_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Channel__needed_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, Channel__Needed__Value_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(Channel__needed_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(Channel__needed_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_channel__Needed__Value.RAW_encode(Channel__Needed__Value_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(Channel__needed_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(Channel__needed_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_38) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_38.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct Channel__needed_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
Channel__Needed__Value_template field_channel__Needed__Value;
};

void Channel__needed_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_channel__Needed__Value = ANY_VALUE;
}
}
}

void Channel__needed_template::copy_value(const Channel__needed& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.channel__Needed__Value().is_bound()) {
  single_value->field_channel__Needed__Value = other_value.channel__Needed__Value();
} else {
  single_value->field_channel__Needed__Value.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void Channel__needed_template::copy_template(const Channel__needed_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.channel__Needed__Value().get_selection()) {
single_value->field_channel__Needed__Value = other_value.channel__Needed__Value();
} else {
single_value->field_channel__Needed__Value.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new Channel__needed_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new Channel__needed_template(*other_value.implication_.precondition);
implication_.implied_template = new Channel__needed_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.Channel_needed.");
break;
}
set_selection(other_value);
}

Channel__needed_template::Channel__needed_template()
{
}

Channel__needed_template::Channel__needed_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

Channel__needed_template::Channel__needed_template(const Channel__needed& other_value)
{
copy_value(other_value);
}

Channel__needed_template::Channel__needed_template(const OPTIONAL<Channel__needed>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Channel__needed&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.Channel_needed from an unbound optional field.");
}
}

Channel__needed_template::Channel__needed_template(Channel__needed_template* p_precondition, Channel__needed_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

Channel__needed_template::Channel__needed_template(Dynamic_Match_Interface<Channel__needed>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<Channel__needed>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

Channel__needed_template::Channel__needed_template(const Channel__needed_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

Channel__needed_template::~Channel__needed_template()
{
clean_up();
}

Channel__needed_template& Channel__needed_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

Channel__needed_template& Channel__needed_template::operator=(const Channel__needed& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

Channel__needed_template& Channel__needed_template::operator=(const OPTIONAL<Channel__needed>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Channel__needed&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.Channel_needed.");
}
return *this;
}

Channel__needed_template& Channel__needed_template::operator=(const Channel__needed_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean Channel__needed_template::match(const Channel__needed& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.channel__Needed__Value().is_bound()) return FALSE;
if(!single_value->field_channel__Needed__Value.match(other_value.channel__Needed__Value(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.Channel_needed.");
}
return FALSE;
}

boolean Channel__needed_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_channel__Needed__Value.is_bound();
}

boolean Channel__needed_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_channel__Needed__Value.is_value();
}

void Channel__needed_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

Channel__needed Channel__needed_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.Channel_needed.");
Channel__needed ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_channel__Needed__Value.is_bound()) {
ret_val.channel__Needed__Value() = single_value->field_channel__Needed__Value.valueof();
}
return ret_val;
}

void Channel__needed_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.Channel_needed.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new Channel__needed_template[list_length];
}

Channel__needed_template& Channel__needed_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.Channel_needed.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.Channel_needed.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& Channel__needed_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& Channel__needed_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.Channel_needed.");
return single_value->field_iEI;
}

BITSTRING_template& Channel__needed_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& Channel__needed_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.Channel_needed.");
return single_value->field_ext;
}

LIN2__2a_template& Channel__needed_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& Channel__needed_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.Channel_needed.");
return single_value->field_lengthIndicator;
}

Channel__Needed__Value_template& Channel__needed_template::channel__Needed__Value()
{
set_specific();
return single_value->field_channel__Needed__Value;
}

const Channel__Needed__Value_template& Channel__needed_template::channel__Needed__Value() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field channel_Needed_Value of a non-specific template of type @BSSGP_Types.Channel_needed.");
return single_value->field_channel__Needed__Value;
}

int Channel__needed_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_needed which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.Channel_needed containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_needed containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_needed containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_needed containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_needed containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_needed containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_needed containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Channel_needed containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.Channel_needed.");
  }
  return 0;
}

void Channel__needed_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", channel_Needed_Value := ");
single_value->field_channel__Needed__Value.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void Channel__needed_template::log_match(const Channel__needed& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_channel__Needed__Value.match(match_value.channel__Needed__Value(), legacy)){
TTCN_Logger::log_logmatch_info(".channel_Needed_Value");
single_value->field_channel__Needed__Value.log_match(match_value.channel__Needed__Value(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", channel_Needed_Value := ");
single_value->field_channel__Needed__Value.log_match(match_value.channel__Needed__Value(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void Channel__needed_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (channel__Needed__Value().is_bound()) channel__Needed__Value().set_implicit_omit();
}

void Channel__needed_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_channel__Needed__Value.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.Channel_needed.");
}
}

void Channel__needed_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_channel__Needed__Value.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new Channel__needed_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.Channel_needed.");
}
}

void Channel__needed_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    Channel__needed_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.Channel_needed has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) channel__Needed__Value().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "channel_Needed_Value")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          channel__Needed__Value().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Channel_needed: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    Channel__needed_template* precondition = new Channel__needed_template;
    precondition->set_param(*param.get_elem(0));
    Channel__needed_template* implied_template = new Channel__needed_template;
    implied_template->set_param(*param.get_elem(1));
    *this = Channel__needed_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.Channel_needed");
  }
  is_ifpresent = param.get_ifpresent();
}

void Channel__needed_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Channel_needed");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Channel_needed");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Channel_needed");
single_value->field_channel__Needed__Value.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Channel_needed");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.Channel_needed");
}

boolean Channel__needed_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean Channel__needed_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

DRX__Parameters::DRX__Parameters()
{
}

DRX__Parameters::DRX__Parameters(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_splitPG__CycleCode,
    const BITSTRING& par_nonDRXTimer,
    const BITSTRING& par_splitOnCCCH,
    const BITSTRING& par_cnSpecificDRXCycleLength)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_splitPG__CycleCode(par_splitPG__CycleCode),
  field_nonDRXTimer(par_nonDRXTimer),
  field_splitOnCCCH(par_splitOnCCCH),
  field_cnSpecificDRXCycleLength(par_cnSpecificDRXCycleLength)
{
}

DRX__Parameters::DRX__Parameters(const DRX__Parameters& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.DRX_Parameters.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.splitPG__CycleCode().is_bound()) field_splitPG__CycleCode = other_value.splitPG__CycleCode();
else field_splitPG__CycleCode.clean_up();
if (other_value.nonDRXTimer().is_bound()) field_nonDRXTimer = other_value.nonDRXTimer();
else field_nonDRXTimer.clean_up();
if (other_value.splitOnCCCH().is_bound()) field_splitOnCCCH = other_value.splitOnCCCH();
else field_splitOnCCCH.clean_up();
if (other_value.cnSpecificDRXCycleLength().is_bound()) field_cnSpecificDRXCycleLength = other_value.cnSpecificDRXCycleLength();
else field_cnSpecificDRXCycleLength.clean_up();
}

void DRX__Parameters::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_splitPG__CycleCode.clean_up();
field_nonDRXTimer.clean_up();
field_splitOnCCCH.clean_up();
field_cnSpecificDRXCycleLength.clean_up();
}

const TTCN_Typedescriptor_t* DRX__Parameters::get_descriptor() const { return &DRX__Parameters_descr_; }
DRX__Parameters& DRX__Parameters::operator=(const DRX__Parameters& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.DRX_Parameters.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.splitPG__CycleCode().is_bound()) field_splitPG__CycleCode = other_value.splitPG__CycleCode();
  else field_splitPG__CycleCode.clean_up();
  if (other_value.nonDRXTimer().is_bound()) field_nonDRXTimer = other_value.nonDRXTimer();
  else field_nonDRXTimer.clean_up();
  if (other_value.splitOnCCCH().is_bound()) field_splitOnCCCH = other_value.splitOnCCCH();
  else field_splitOnCCCH.clean_up();
  if (other_value.cnSpecificDRXCycleLength().is_bound()) field_cnSpecificDRXCycleLength = other_value.cnSpecificDRXCycleLength();
  else field_cnSpecificDRXCycleLength.clean_up();
}
return *this;
}

boolean DRX__Parameters::operator==(const DRX__Parameters& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_splitPG__CycleCode==other_value.field_splitPG__CycleCode
  && field_nonDRXTimer==other_value.field_nonDRXTimer
  && field_splitOnCCCH==other_value.field_splitOnCCCH
  && field_cnSpecificDRXCycleLength==other_value.field_cnSpecificDRXCycleLength;
}

boolean DRX__Parameters::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_splitPG__CycleCode.is_bound())
  || (field_nonDRXTimer.is_bound())
  || (field_splitOnCCCH.is_bound())
  || (field_cnSpecificDRXCycleLength.is_bound());
}
boolean DRX__Parameters::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_splitPG__CycleCode.is_value()
  && field_nonDRXTimer.is_value()
  && field_splitOnCCCH.is_value()
  && field_cnSpecificDRXCycleLength.is_value();
}
void DRX__Parameters::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", splitPG_CycleCode := ");
field_splitPG__CycleCode.log();
TTCN_Logger::log_event_str(", nonDRXTimer := ");
field_nonDRXTimer.log();
TTCN_Logger::log_event_str(", splitOnCCCH := ");
field_splitOnCCCH.log();
TTCN_Logger::log_event_str(", cnSpecificDRXCycleLength := ");
field_cnSpecificDRXCycleLength.log();
TTCN_Logger::log_event_str(" }");
}

void DRX__Parameters::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (splitPG__CycleCode().is_bound()) splitPG__CycleCode().set_implicit_omit();
if (nonDRXTimer().is_bound()) nonDRXTimer().set_implicit_omit();
if (splitOnCCCH().is_bound()) splitOnCCCH().set_implicit_omit();
if (cnSpecificDRXCycleLength().is_bound()) cnSpecificDRXCycleLength().set_implicit_omit();
}

void DRX__Parameters::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (7<param.get_size()) {
      param.error("record value of type @BSSGP_Types.DRX_Parameters has 7 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) splitPG__CycleCode().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) nonDRXTimer().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) splitOnCCCH().set_param(*param.get_elem(5));
    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) cnSpecificDRXCycleLength().set_param(*param.get_elem(6));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "splitPG_CycleCode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          splitPG__CycleCode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "nonDRXTimer")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          nonDRXTimer().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "splitOnCCCH")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          splitOnCCCH().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "cnSpecificDRXCycleLength")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          cnSpecificDRXCycleLength().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.DRX_Parameters: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.DRX_Parameters");
  }
}

void DRX__Parameters::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_splitPG__CycleCode.encode_text(text_buf);
field_nonDRXTimer.encode_text(text_buf);
field_splitOnCCCH.encode_text(text_buf);
field_cnSpecificDRXCycleLength.encode_text(text_buf);
}

void DRX__Parameters::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_splitPG__CycleCode.decode_text(text_buf);
field_nonDRXTimer.decode_text(text_buf);
field_splitOnCCCH.decode_text(text_buf);
field_cnSpecificDRXCycleLength.decode_text(text_buf);
}

void DRX__Parameters::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void DRX__Parameters::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int DRX__Parameters::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, DRX__Parameters_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(DRX__Parameters_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, DRX__Parameters_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(DRX__Parameters_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_splitPG__CycleCode.RAW_decode(General__Types::OCT1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_4_force_omit(4, force_omit, General__Types::BIT3_descr_.raw->forceomit);
  decoded_field_length = field_nonDRXTimer.RAW_decode(General__Types::BIT3_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_4_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_5_force_omit(5, force_omit, General__Types::BIT1_descr_.raw->forceomit);
  decoded_field_length = field_splitOnCCCH.RAW_decode(General__Types::BIT1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_5_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_6_force_omit(6, force_omit, General__Types::BIT4_descr_.raw->forceomit);
  decoded_field_length = field_cnSpecificDRXCycleLength.RAW_decode(General__Types::BIT4_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_6_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_3) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int DRX__Parameters::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 7;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(7);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DRX__Parameters_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, DRX__Parameters_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::BIT3_descr_.raw);
  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, General__Types::BIT1_descr_.raw);
  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, General__Types::BIT4_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(DRX__Parameters_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(DRX__Parameters_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_splitPG__CycleCode.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[3]);
  encoded_length += field_nonDRXTimer.RAW_encode(General__Types::BIT3_descr_, *myleaf.body.node.nodes[4]);
  encoded_length += field_splitOnCCCH.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[5]);
  encoded_length += field_cnSpecificDRXCycleLength.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[6]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 4;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(4);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[1].level = myleaf.body.node.nodes[4]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[1].pos = myleaf.body.node.nodes[4]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[2].level = myleaf.body.node.nodes[5]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[2].pos = myleaf.body.node.nodes[5]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[3].level = myleaf.body.node.nodes[6]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[3].pos = myleaf.body.node.nodes[6]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(DRX__Parameters_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(DRX__Parameters_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_3) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_3.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct DRX__Parameters_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_splitPG__CycleCode;
BITSTRING_template field_nonDRXTimer;
BITSTRING_template field_splitOnCCCH;
BITSTRING_template field_cnSpecificDRXCycleLength;
};

void DRX__Parameters_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_splitPG__CycleCode = ANY_VALUE;
single_value->field_nonDRXTimer = ANY_VALUE;
single_value->field_splitOnCCCH = ANY_VALUE;
single_value->field_cnSpecificDRXCycleLength = ANY_VALUE;
}
}
}

void DRX__Parameters_template::copy_value(const DRX__Parameters& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.splitPG__CycleCode().is_bound()) {
  single_value->field_splitPG__CycleCode = other_value.splitPG__CycleCode();
} else {
  single_value->field_splitPG__CycleCode.clean_up();
}
if (other_value.nonDRXTimer().is_bound()) {
  single_value->field_nonDRXTimer = other_value.nonDRXTimer();
} else {
  single_value->field_nonDRXTimer.clean_up();
}
if (other_value.splitOnCCCH().is_bound()) {
  single_value->field_splitOnCCCH = other_value.splitOnCCCH();
} else {
  single_value->field_splitOnCCCH.clean_up();
}
if (other_value.cnSpecificDRXCycleLength().is_bound()) {
  single_value->field_cnSpecificDRXCycleLength = other_value.cnSpecificDRXCycleLength();
} else {
  single_value->field_cnSpecificDRXCycleLength.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void DRX__Parameters_template::copy_template(const DRX__Parameters_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.splitPG__CycleCode().get_selection()) {
single_value->field_splitPG__CycleCode = other_value.splitPG__CycleCode();
} else {
single_value->field_splitPG__CycleCode.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.nonDRXTimer().get_selection()) {
single_value->field_nonDRXTimer = other_value.nonDRXTimer();
} else {
single_value->field_nonDRXTimer.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.splitOnCCCH().get_selection()) {
single_value->field_splitOnCCCH = other_value.splitOnCCCH();
} else {
single_value->field_splitOnCCCH.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.cnSpecificDRXCycleLength().get_selection()) {
single_value->field_cnSpecificDRXCycleLength = other_value.cnSpecificDRXCycleLength();
} else {
single_value->field_cnSpecificDRXCycleLength.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new DRX__Parameters_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new DRX__Parameters_template(*other_value.implication_.precondition);
implication_.implied_template = new DRX__Parameters_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.DRX_Parameters.");
break;
}
set_selection(other_value);
}

DRX__Parameters_template::DRX__Parameters_template()
{
}

DRX__Parameters_template::DRX__Parameters_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

DRX__Parameters_template::DRX__Parameters_template(const DRX__Parameters& other_value)
{
copy_value(other_value);
}

DRX__Parameters_template::DRX__Parameters_template(const OPTIONAL<DRX__Parameters>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const DRX__Parameters&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.DRX_Parameters from an unbound optional field.");
}
}

DRX__Parameters_template::DRX__Parameters_template(DRX__Parameters_template* p_precondition, DRX__Parameters_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

DRX__Parameters_template::DRX__Parameters_template(Dynamic_Match_Interface<DRX__Parameters>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<DRX__Parameters>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

DRX__Parameters_template::DRX__Parameters_template(const DRX__Parameters_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

DRX__Parameters_template::~DRX__Parameters_template()
{
clean_up();
}

DRX__Parameters_template& DRX__Parameters_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

DRX__Parameters_template& DRX__Parameters_template::operator=(const DRX__Parameters& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

DRX__Parameters_template& DRX__Parameters_template::operator=(const OPTIONAL<DRX__Parameters>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const DRX__Parameters&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.DRX_Parameters.");
}
return *this;
}

DRX__Parameters_template& DRX__Parameters_template::operator=(const DRX__Parameters_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean DRX__Parameters_template::match(const DRX__Parameters& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.splitPG__CycleCode().is_bound()) return FALSE;
if(!single_value->field_splitPG__CycleCode.match(other_value.splitPG__CycleCode(), legacy))return FALSE;
if(!other_value.nonDRXTimer().is_bound()) return FALSE;
if(!single_value->field_nonDRXTimer.match(other_value.nonDRXTimer(), legacy))return FALSE;
if(!other_value.splitOnCCCH().is_bound()) return FALSE;
if(!single_value->field_splitOnCCCH.match(other_value.splitOnCCCH(), legacy))return FALSE;
if(!other_value.cnSpecificDRXCycleLength().is_bound()) return FALSE;
if(!single_value->field_cnSpecificDRXCycleLength.match(other_value.cnSpecificDRXCycleLength(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.DRX_Parameters.");
}
return FALSE;
}

boolean DRX__Parameters_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_splitPG__CycleCode.is_bound()
 || single_value->field_nonDRXTimer.is_bound()
 || single_value->field_splitOnCCCH.is_bound()
 || single_value->field_cnSpecificDRXCycleLength.is_bound();
}

boolean DRX__Parameters_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_splitPG__CycleCode.is_value()
 && single_value->field_nonDRXTimer.is_value()
 && single_value->field_splitOnCCCH.is_value()
 && single_value->field_cnSpecificDRXCycleLength.is_value();
}

void DRX__Parameters_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

DRX__Parameters DRX__Parameters_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.DRX_Parameters.");
DRX__Parameters ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_splitPG__CycleCode.is_bound()) {
ret_val.splitPG__CycleCode() = single_value->field_splitPG__CycleCode.valueof();
}
if (single_value->field_nonDRXTimer.is_bound()) {
ret_val.nonDRXTimer() = single_value->field_nonDRXTimer.valueof();
}
if (single_value->field_splitOnCCCH.is_bound()) {
ret_val.splitOnCCCH() = single_value->field_splitOnCCCH.valueof();
}
if (single_value->field_cnSpecificDRXCycleLength.is_bound()) {
ret_val.cnSpecificDRXCycleLength() = single_value->field_cnSpecificDRXCycleLength.valueof();
}
return ret_val;
}

void DRX__Parameters_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.DRX_Parameters.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new DRX__Parameters_template[list_length];
}

DRX__Parameters_template& DRX__Parameters_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.DRX_Parameters.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.DRX_Parameters.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& DRX__Parameters_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& DRX__Parameters_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.DRX_Parameters.");
return single_value->field_iEI;
}

BITSTRING_template& DRX__Parameters_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& DRX__Parameters_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.DRX_Parameters.");
return single_value->field_ext;
}

LIN2__2a_template& DRX__Parameters_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& DRX__Parameters_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.DRX_Parameters.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& DRX__Parameters_template::splitPG__CycleCode()
{
set_specific();
return single_value->field_splitPG__CycleCode;
}

const OCTETSTRING_template& DRX__Parameters_template::splitPG__CycleCode() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field splitPG_CycleCode of a non-specific template of type @BSSGP_Types.DRX_Parameters.");
return single_value->field_splitPG__CycleCode;
}

BITSTRING_template& DRX__Parameters_template::nonDRXTimer()
{
set_specific();
return single_value->field_nonDRXTimer;
}

const BITSTRING_template& DRX__Parameters_template::nonDRXTimer() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field nonDRXTimer of a non-specific template of type @BSSGP_Types.DRX_Parameters.");
return single_value->field_nonDRXTimer;
}

BITSTRING_template& DRX__Parameters_template::splitOnCCCH()
{
set_specific();
return single_value->field_splitOnCCCH;
}

const BITSTRING_template& DRX__Parameters_template::splitOnCCCH() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field splitOnCCCH of a non-specific template of type @BSSGP_Types.DRX_Parameters.");
return single_value->field_splitOnCCCH;
}

BITSTRING_template& DRX__Parameters_template::cnSpecificDRXCycleLength()
{
set_specific();
return single_value->field_cnSpecificDRXCycleLength;
}

const BITSTRING_template& DRX__Parameters_template::cnSpecificDRXCycleLength() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field cnSpecificDRXCycleLength of a non-specific template of type @BSSGP_Types.DRX_Parameters.");
return single_value->field_cnSpecificDRXCycleLength;
}

int DRX__Parameters_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.DRX_Parameters which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 7;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.DRX_Parameters containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.DRX_Parameters containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.DRX_Parameters containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.DRX_Parameters containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.DRX_Parameters containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.DRX_Parameters containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.DRX_Parameters containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.DRX_Parameters containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.DRX_Parameters.");
  }
  return 0;
}

void DRX__Parameters_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", splitPG_CycleCode := ");
single_value->field_splitPG__CycleCode.log();
TTCN_Logger::log_event_str(", nonDRXTimer := ");
single_value->field_nonDRXTimer.log();
TTCN_Logger::log_event_str(", splitOnCCCH := ");
single_value->field_splitOnCCCH.log();
TTCN_Logger::log_event_str(", cnSpecificDRXCycleLength := ");
single_value->field_cnSpecificDRXCycleLength.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void DRX__Parameters_template::log_match(const DRX__Parameters& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_splitPG__CycleCode.match(match_value.splitPG__CycleCode(), legacy)){
TTCN_Logger::log_logmatch_info(".splitPG_CycleCode");
single_value->field_splitPG__CycleCode.log_match(match_value.splitPG__CycleCode(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_nonDRXTimer.match(match_value.nonDRXTimer(), legacy)){
TTCN_Logger::log_logmatch_info(".nonDRXTimer");
single_value->field_nonDRXTimer.log_match(match_value.nonDRXTimer(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_splitOnCCCH.match(match_value.splitOnCCCH(), legacy)){
TTCN_Logger::log_logmatch_info(".splitOnCCCH");
single_value->field_splitOnCCCH.log_match(match_value.splitOnCCCH(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_cnSpecificDRXCycleLength.match(match_value.cnSpecificDRXCycleLength(), legacy)){
TTCN_Logger::log_logmatch_info(".cnSpecificDRXCycleLength");
single_value->field_cnSpecificDRXCycleLength.log_match(match_value.cnSpecificDRXCycleLength(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", splitPG_CycleCode := ");
single_value->field_splitPG__CycleCode.log_match(match_value.splitPG__CycleCode(), legacy);
TTCN_Logger::log_event_str(", nonDRXTimer := ");
single_value->field_nonDRXTimer.log_match(match_value.nonDRXTimer(), legacy);
TTCN_Logger::log_event_str(", splitOnCCCH := ");
single_value->field_splitOnCCCH.log_match(match_value.splitOnCCCH(), legacy);
TTCN_Logger::log_event_str(", cnSpecificDRXCycleLength := ");
single_value->field_cnSpecificDRXCycleLength.log_match(match_value.cnSpecificDRXCycleLength(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void DRX__Parameters_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (splitPG__CycleCode().is_bound()) splitPG__CycleCode().set_implicit_omit();
if (nonDRXTimer().is_bound()) nonDRXTimer().set_implicit_omit();
if (splitOnCCCH().is_bound()) splitOnCCCH().set_implicit_omit();
if (cnSpecificDRXCycleLength().is_bound()) cnSpecificDRXCycleLength().set_implicit_omit();
}

void DRX__Parameters_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_splitPG__CycleCode.encode_text(text_buf);
single_value->field_nonDRXTimer.encode_text(text_buf);
single_value->field_splitOnCCCH.encode_text(text_buf);
single_value->field_cnSpecificDRXCycleLength.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.DRX_Parameters.");
}
}

void DRX__Parameters_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_splitPG__CycleCode.decode_text(text_buf);
single_value->field_nonDRXTimer.decode_text(text_buf);
single_value->field_splitOnCCCH.decode_text(text_buf);
single_value->field_cnSpecificDRXCycleLength.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new DRX__Parameters_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.DRX_Parameters.");
}
}

void DRX__Parameters_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    DRX__Parameters_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (7<param.get_size()) {
      param.error("record template of type @BSSGP_Types.DRX_Parameters has 7 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) splitPG__CycleCode().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) nonDRXTimer().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) splitOnCCCH().set_param(*param.get_elem(5));
    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) cnSpecificDRXCycleLength().set_param(*param.get_elem(6));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "splitPG_CycleCode")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          splitPG__CycleCode().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "nonDRXTimer")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          nonDRXTimer().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "splitOnCCCH")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          splitOnCCCH().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "cnSpecificDRXCycleLength")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          cnSpecificDRXCycleLength().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.DRX_Parameters: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    DRX__Parameters_template* precondition = new DRX__Parameters_template;
    precondition->set_param(*param.get_elem(0));
    DRX__Parameters_template* implied_template = new DRX__Parameters_template;
    implied_template->set_param(*param.get_elem(1));
    *this = DRX__Parameters_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.DRX_Parameters");
  }
  is_ifpresent = param.get_ifpresent();
}

void DRX__Parameters_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.DRX_Parameters");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.DRX_Parameters");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.DRX_Parameters");
single_value->field_splitPG__CycleCode.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.DRX_Parameters");
single_value->field_nonDRXTimer.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.DRX_Parameters");
single_value->field_splitOnCCCH.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.DRX_Parameters");
single_value->field_cnSpecificDRXCycleLength.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.DRX_Parameters");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.DRX_Parameters");
}

boolean DRX__Parameters_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean DRX__Parameters_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

EMLPP__Priority__BSSGP::EMLPP__Priority__BSSGP()
{
}

EMLPP__Priority__BSSGP::EMLPP__Priority__BSSGP(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const BITSTRING& par_callPriority,
    const BITSTRING& par_spare)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_callPriority(par_callPriority),
  field_spare(par_spare)
{
}

EMLPP__Priority__BSSGP::EMLPP__Priority__BSSGP(const EMLPP__Priority__BSSGP& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.callPriority().is_bound()) field_callPriority = other_value.callPriority();
else field_callPriority.clean_up();
if (other_value.spare().is_bound()) field_spare = other_value.spare();
else field_spare.clean_up();
}

void EMLPP__Priority__BSSGP::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_callPriority.clean_up();
field_spare.clean_up();
}

const TTCN_Typedescriptor_t* EMLPP__Priority__BSSGP::get_descriptor() const { return &EMLPP__Priority__BSSGP_descr_; }
EMLPP__Priority__BSSGP& EMLPP__Priority__BSSGP::operator=(const EMLPP__Priority__BSSGP& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.callPriority().is_bound()) field_callPriority = other_value.callPriority();
  else field_callPriority.clean_up();
  if (other_value.spare().is_bound()) field_spare = other_value.spare();
  else field_spare.clean_up();
}
return *this;
}

boolean EMLPP__Priority__BSSGP::operator==(const EMLPP__Priority__BSSGP& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_callPriority==other_value.field_callPriority
  && field_spare==other_value.field_spare;
}

boolean EMLPP__Priority__BSSGP::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_callPriority.is_bound())
  || (field_spare.is_bound());
}
boolean EMLPP__Priority__BSSGP::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_callPriority.is_value()
  && field_spare.is_value();
}
void EMLPP__Priority__BSSGP::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", callPriority := ");
field_callPriority.log();
TTCN_Logger::log_event_str(", spare := ");
field_spare.log();
TTCN_Logger::log_event_str(" }");
}

void EMLPP__Priority__BSSGP::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (callPriority().is_bound()) callPriority().set_implicit_omit();
if (spare().is_bound()) spare().set_implicit_omit();
}

void EMLPP__Priority__BSSGP::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (5<param.get_size()) {
      param.error("record value of type @BSSGP_Types.EMLPP_Priority_BSSGP has 5 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) callPriority().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(4));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "callPriority")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          callPriority().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "spare")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          spare().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.EMLPP_Priority_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.EMLPP_Priority_BSSGP");
  }
}

void EMLPP__Priority__BSSGP::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_callPriority.encode_text(text_buf);
field_spare.encode_text(text_buf);
}

void EMLPP__Priority__BSSGP::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_callPriority.decode_text(text_buf);
field_spare.decode_text(text_buf);
}

void EMLPP__Priority__BSSGP::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void EMLPP__Priority__BSSGP::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int EMLPP__Priority__BSSGP::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, EMLPP__Priority__BSSGP_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(EMLPP__Priority__BSSGP_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, EMLPP__Priority__BSSGP_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(EMLPP__Priority__BSSGP_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::BIT3_descr_.raw->forceomit);
  decoded_field_length = field_callPriority.RAW_decode(General__Types::BIT3_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_4_force_omit(4, force_omit, General__Types::BIT5_descr_.raw->forceomit);
  decoded_field_length = field_spare.RAW_decode(General__Types::BIT5_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_4_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_39) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int EMLPP__Priority__BSSGP::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 5;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(5);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, EMLPP__Priority__BSSGP_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, EMLPP__Priority__BSSGP_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::BIT3_descr_.raw);
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::BIT5_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(EMLPP__Priority__BSSGP_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(EMLPP__Priority__BSSGP_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_callPriority.RAW_encode(General__Types::BIT3_descr_, *myleaf.body.node.nodes[3]);
  encoded_length += field_spare.RAW_encode(General__Types::BIT5_descr_, *myleaf.body.node.nodes[4]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 2;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(2);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[1].level = myleaf.body.node.nodes[4]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[1].pos = myleaf.body.node.nodes[4]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(EMLPP__Priority__BSSGP_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(EMLPP__Priority__BSSGP_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_39) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_39.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct EMLPP__Priority__BSSGP_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
BITSTRING_template field_callPriority;
BITSTRING_template field_spare;
};

void EMLPP__Priority__BSSGP_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_callPriority = ANY_VALUE;
single_value->field_spare = ANY_VALUE;
}
}
}

void EMLPP__Priority__BSSGP_template::copy_value(const EMLPP__Priority__BSSGP& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.callPriority().is_bound()) {
  single_value->field_callPriority = other_value.callPriority();
} else {
  single_value->field_callPriority.clean_up();
}
if (other_value.spare().is_bound()) {
  single_value->field_spare = other_value.spare();
} else {
  single_value->field_spare.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void EMLPP__Priority__BSSGP_template::copy_template(const EMLPP__Priority__BSSGP_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.callPriority().get_selection()) {
single_value->field_callPriority = other_value.callPriority();
} else {
single_value->field_callPriority.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.spare().get_selection()) {
single_value->field_spare = other_value.spare();
} else {
single_value->field_spare.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new EMLPP__Priority__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new EMLPP__Priority__BSSGP_template(*other_value.implication_.precondition);
implication_.implied_template = new EMLPP__Priority__BSSGP_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
break;
}
set_selection(other_value);
}

EMLPP__Priority__BSSGP_template::EMLPP__Priority__BSSGP_template()
{
}

EMLPP__Priority__BSSGP_template::EMLPP__Priority__BSSGP_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

EMLPP__Priority__BSSGP_template::EMLPP__Priority__BSSGP_template(const EMLPP__Priority__BSSGP& other_value)
{
copy_value(other_value);
}

EMLPP__Priority__BSSGP_template::EMLPP__Priority__BSSGP_template(const OPTIONAL<EMLPP__Priority__BSSGP>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const EMLPP__Priority__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.EMLPP_Priority_BSSGP from an unbound optional field.");
}
}

EMLPP__Priority__BSSGP_template::EMLPP__Priority__BSSGP_template(EMLPP__Priority__BSSGP_template* p_precondition, EMLPP__Priority__BSSGP_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

EMLPP__Priority__BSSGP_template::EMLPP__Priority__BSSGP_template(Dynamic_Match_Interface<EMLPP__Priority__BSSGP>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<EMLPP__Priority__BSSGP>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

EMLPP__Priority__BSSGP_template::EMLPP__Priority__BSSGP_template(const EMLPP__Priority__BSSGP_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

EMLPP__Priority__BSSGP_template::~EMLPP__Priority__BSSGP_template()
{
clean_up();
}

EMLPP__Priority__BSSGP_template& EMLPP__Priority__BSSGP_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

EMLPP__Priority__BSSGP_template& EMLPP__Priority__BSSGP_template::operator=(const EMLPP__Priority__BSSGP& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

EMLPP__Priority__BSSGP_template& EMLPP__Priority__BSSGP_template::operator=(const OPTIONAL<EMLPP__Priority__BSSGP>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const EMLPP__Priority__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
}
return *this;
}

EMLPP__Priority__BSSGP_template& EMLPP__Priority__BSSGP_template::operator=(const EMLPP__Priority__BSSGP_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean EMLPP__Priority__BSSGP_template::match(const EMLPP__Priority__BSSGP& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.callPriority().is_bound()) return FALSE;
if(!single_value->field_callPriority.match(other_value.callPriority(), legacy))return FALSE;
if(!other_value.spare().is_bound()) return FALSE;
if(!single_value->field_spare.match(other_value.spare(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
}
return FALSE;
}

boolean EMLPP__Priority__BSSGP_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_callPriority.is_bound()
 || single_value->field_spare.is_bound();
}

boolean EMLPP__Priority__BSSGP_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_callPriority.is_value()
 && single_value->field_spare.is_value();
}

void EMLPP__Priority__BSSGP_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

EMLPP__Priority__BSSGP EMLPP__Priority__BSSGP_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
EMLPP__Priority__BSSGP ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_callPriority.is_bound()) {
ret_val.callPriority() = single_value->field_callPriority.valueof();
}
if (single_value->field_spare.is_bound()) {
ret_val.spare() = single_value->field_spare.valueof();
}
return ret_val;
}

void EMLPP__Priority__BSSGP_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new EMLPP__Priority__BSSGP_template[list_length];
}

EMLPP__Priority__BSSGP_template& EMLPP__Priority__BSSGP_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& EMLPP__Priority__BSSGP_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& EMLPP__Priority__BSSGP_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
return single_value->field_iEI;
}

BITSTRING_template& EMLPP__Priority__BSSGP_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& EMLPP__Priority__BSSGP_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
return single_value->field_ext;
}

LIN2__2a_template& EMLPP__Priority__BSSGP_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& EMLPP__Priority__BSSGP_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
return single_value->field_lengthIndicator;
}

BITSTRING_template& EMLPP__Priority__BSSGP_template::callPriority()
{
set_specific();
return single_value->field_callPriority;
}

const BITSTRING_template& EMLPP__Priority__BSSGP_template::callPriority() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field callPriority of a non-specific template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
return single_value->field_callPriority;
}

BITSTRING_template& EMLPP__Priority__BSSGP_template::spare()
{
set_specific();
return single_value->field_spare;
}

const BITSTRING_template& EMLPP__Priority__BSSGP_template::spare() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field spare of a non-specific template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
return single_value->field_spare;
}

int EMLPP__Priority__BSSGP_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.EMLPP_Priority_BSSGP which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 5;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.EMLPP_Priority_BSSGP containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.EMLPP_Priority_BSSGP containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.EMLPP_Priority_BSSGP containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.EMLPP_Priority_BSSGP containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.EMLPP_Priority_BSSGP containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.EMLPP_Priority_BSSGP containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.EMLPP_Priority_BSSGP containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.EMLPP_Priority_BSSGP containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
  }
  return 0;
}

void EMLPP__Priority__BSSGP_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", callPriority := ");
single_value->field_callPriority.log();
TTCN_Logger::log_event_str(", spare := ");
single_value->field_spare.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void EMLPP__Priority__BSSGP_template::log_match(const EMLPP__Priority__BSSGP& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_callPriority.match(match_value.callPriority(), legacy)){
TTCN_Logger::log_logmatch_info(".callPriority");
single_value->field_callPriority.log_match(match_value.callPriority(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_spare.match(match_value.spare(), legacy)){
TTCN_Logger::log_logmatch_info(".spare");
single_value->field_spare.log_match(match_value.spare(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", callPriority := ");
single_value->field_callPriority.log_match(match_value.callPriority(), legacy);
TTCN_Logger::log_event_str(", spare := ");
single_value->field_spare.log_match(match_value.spare(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void EMLPP__Priority__BSSGP_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (callPriority().is_bound()) callPriority().set_implicit_omit();
if (spare().is_bound()) spare().set_implicit_omit();
}

void EMLPP__Priority__BSSGP_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_callPriority.encode_text(text_buf);
single_value->field_spare.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
}
}

void EMLPP__Priority__BSSGP_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_callPriority.decode_text(text_buf);
single_value->field_spare.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new EMLPP__Priority__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.EMLPP_Priority_BSSGP.");
}
}

void EMLPP__Priority__BSSGP_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    EMLPP__Priority__BSSGP_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (5<param.get_size()) {
      param.error("record template of type @BSSGP_Types.EMLPP_Priority_BSSGP has 5 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) callPriority().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(4));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "callPriority")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          callPriority().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "spare")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          spare().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.EMLPP_Priority_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    EMLPP__Priority__BSSGP_template* precondition = new EMLPP__Priority__BSSGP_template;
    precondition->set_param(*param.get_elem(0));
    EMLPP__Priority__BSSGP_template* implied_template = new EMLPP__Priority__BSSGP_template;
    implied_template->set_param(*param.get_elem(1));
    *this = EMLPP__Priority__BSSGP_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.EMLPP_Priority_BSSGP");
  }
  is_ifpresent = param.get_ifpresent();
}

void EMLPP__Priority__BSSGP_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.EMLPP_Priority_BSSGP");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.EMLPP_Priority_BSSGP");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.EMLPP_Priority_BSSGP");
single_value->field_callPriority.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.EMLPP_Priority_BSSGP");
single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.EMLPP_Priority_BSSGP");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.EMLPP_Priority_BSSGP");
}

boolean EMLPP__Priority__BSSGP_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean EMLPP__Priority__BSSGP_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

Flush__Action::Flush__Action()
{
}

Flush__Action::Flush__Action(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_actionValue)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_actionValue(par_actionValue)
{
}

Flush__Action::Flush__Action(const Flush__Action& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.Flush_Action.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.actionValue().is_bound()) field_actionValue = other_value.actionValue();
else field_actionValue.clean_up();
}

void Flush__Action::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_actionValue.clean_up();
}

const TTCN_Typedescriptor_t* Flush__Action::get_descriptor() const { return &Flush__Action_descr_; }
Flush__Action& Flush__Action::operator=(const Flush__Action& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.Flush_Action.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.actionValue().is_bound()) field_actionValue = other_value.actionValue();
  else field_actionValue.clean_up();
}
return *this;
}

boolean Flush__Action::operator==(const Flush__Action& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_actionValue==other_value.field_actionValue;
}

boolean Flush__Action::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_actionValue.is_bound());
}
boolean Flush__Action::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_actionValue.is_value();
}
void Flush__Action::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", actionValue := ");
field_actionValue.log();
TTCN_Logger::log_event_str(" }");
}

void Flush__Action::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (actionValue().is_bound()) actionValue().set_implicit_omit();
}

void Flush__Action::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.Flush_Action has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) actionValue().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "actionValue")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          actionValue().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Flush_Action: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.Flush_Action");
  }
}

void Flush__Action::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_actionValue.encode_text(text_buf);
}

void Flush__Action::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_actionValue.decode_text(text_buf);
}

void Flush__Action::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void Flush__Action::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int Flush__Action::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, Flush__Action_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(Flush__Action_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, Flush__Action_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(Flush__Action_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_actionValue.RAW_decode(General__Types::OCT1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_46) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int Flush__Action::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Flush__Action_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Flush__Action_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT1_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(Flush__Action_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(Flush__Action_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_actionValue.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(Flush__Action_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(Flush__Action_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_46) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_46.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct Flush__Action_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_actionValue;
};

void Flush__Action_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_actionValue = ANY_VALUE;
}
}
}

void Flush__Action_template::copy_value(const Flush__Action& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.actionValue().is_bound()) {
  single_value->field_actionValue = other_value.actionValue();
} else {
  single_value->field_actionValue.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void Flush__Action_template::copy_template(const Flush__Action_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.actionValue().get_selection()) {
single_value->field_actionValue = other_value.actionValue();
} else {
single_value->field_actionValue.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new Flush__Action_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new Flush__Action_template(*other_value.implication_.precondition);
implication_.implied_template = new Flush__Action_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.Flush_Action.");
break;
}
set_selection(other_value);
}

Flush__Action_template::Flush__Action_template()
{
}

Flush__Action_template::Flush__Action_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

Flush__Action_template::Flush__Action_template(const Flush__Action& other_value)
{
copy_value(other_value);
}

Flush__Action_template::Flush__Action_template(const OPTIONAL<Flush__Action>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Flush__Action&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.Flush_Action from an unbound optional field.");
}
}

Flush__Action_template::Flush__Action_template(Flush__Action_template* p_precondition, Flush__Action_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

Flush__Action_template::Flush__Action_template(Dynamic_Match_Interface<Flush__Action>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<Flush__Action>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

Flush__Action_template::Flush__Action_template(const Flush__Action_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

Flush__Action_template::~Flush__Action_template()
{
clean_up();
}

Flush__Action_template& Flush__Action_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

Flush__Action_template& Flush__Action_template::operator=(const Flush__Action& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

Flush__Action_template& Flush__Action_template::operator=(const OPTIONAL<Flush__Action>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Flush__Action&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.Flush_Action.");
}
return *this;
}

Flush__Action_template& Flush__Action_template::operator=(const Flush__Action_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean Flush__Action_template::match(const Flush__Action& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.actionValue().is_bound()) return FALSE;
if(!single_value->field_actionValue.match(other_value.actionValue(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.Flush_Action.");
}
return FALSE;
}

boolean Flush__Action_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_actionValue.is_bound();
}

boolean Flush__Action_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_actionValue.is_value();
}

void Flush__Action_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

Flush__Action Flush__Action_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.Flush_Action.");
Flush__Action ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_actionValue.is_bound()) {
ret_val.actionValue() = single_value->field_actionValue.valueof();
}
return ret_val;
}

void Flush__Action_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.Flush_Action.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new Flush__Action_template[list_length];
}

Flush__Action_template& Flush__Action_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.Flush_Action.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.Flush_Action.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& Flush__Action_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& Flush__Action_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.Flush_Action.");
return single_value->field_iEI;
}

BITSTRING_template& Flush__Action_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& Flush__Action_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.Flush_Action.");
return single_value->field_ext;
}

LIN2__2a_template& Flush__Action_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& Flush__Action_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.Flush_Action.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& Flush__Action_template::actionValue()
{
set_specific();
return single_value->field_actionValue;
}

const OCTETSTRING_template& Flush__Action_template::actionValue() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field actionValue of a non-specific template of type @BSSGP_Types.Flush_Action.");
return single_value->field_actionValue;
}

int Flush__Action_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Flush_Action which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.Flush_Action containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Flush_Action containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Flush_Action containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Flush_Action containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Flush_Action containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Flush_Action containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Flush_Action containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Flush_Action containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.Flush_Action.");
  }
  return 0;
}

void Flush__Action_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", actionValue := ");
single_value->field_actionValue.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void Flush__Action_template::log_match(const Flush__Action& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_actionValue.match(match_value.actionValue(), legacy)){
TTCN_Logger::log_logmatch_info(".actionValue");
single_value->field_actionValue.log_match(match_value.actionValue(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", actionValue := ");
single_value->field_actionValue.log_match(match_value.actionValue(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void Flush__Action_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (actionValue().is_bound()) actionValue().set_implicit_omit();
}

void Flush__Action_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_actionValue.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.Flush_Action.");
}
}

void Flush__Action_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_actionValue.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new Flush__Action_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.Flush_Action.");
}
}

void Flush__Action_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    Flush__Action_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.Flush_Action has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) actionValue().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "actionValue")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          actionValue().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Flush_Action: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    Flush__Action_template* precondition = new Flush__Action_template;
    precondition->set_param(*param.get_elem(0));
    Flush__Action_template* implied_template = new Flush__Action_template;
    implied_template->set_param(*param.get_elem(1));
    *this = Flush__Action_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.Flush_Action");
  }
  is_ifpresent = param.get_ifpresent();
}

void Flush__Action_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Flush_Action");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Flush_Action");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Flush_Action");
single_value->field_actionValue.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Flush_Action");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.Flush_Action");
}

boolean Flush__Action_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean Flush__Action_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

IMSI__BSSGP::IMSI__BSSGP()
{
}

IMSI__BSSGP::IMSI__BSSGP(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const BITSTRING& par_type__of__Identity,
    const BITSTRING& par_oddevenIndicator,
    const HEXSTRING& par_digits)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_type__of__Identity(par_type__of__Identity),
  field_oddevenIndicator(par_oddevenIndicator),
  field_digits(par_digits)
{
}

IMSI__BSSGP::IMSI__BSSGP(const IMSI__BSSGP& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.IMSI_BSSGP.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.type__of__Identity().is_bound()) field_type__of__Identity = other_value.type__of__Identity();
else field_type__of__Identity.clean_up();
if (other_value.oddevenIndicator().is_bound()) field_oddevenIndicator = other_value.oddevenIndicator();
else field_oddevenIndicator.clean_up();
if (other_value.digits().is_bound()) field_digits = other_value.digits();
else field_digits.clean_up();
}

void IMSI__BSSGP::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_type__of__Identity.clean_up();
field_oddevenIndicator.clean_up();
field_digits.clean_up();
}

const TTCN_Typedescriptor_t* IMSI__BSSGP::get_descriptor() const { return &IMSI__BSSGP_descr_; }
IMSI__BSSGP& IMSI__BSSGP::operator=(const IMSI__BSSGP& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.IMSI_BSSGP.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.type__of__Identity().is_bound()) field_type__of__Identity = other_value.type__of__Identity();
  else field_type__of__Identity.clean_up();
  if (other_value.oddevenIndicator().is_bound()) field_oddevenIndicator = other_value.oddevenIndicator();
  else field_oddevenIndicator.clean_up();
  if (other_value.digits().is_bound()) field_digits = other_value.digits();
  else field_digits.clean_up();
}
return *this;
}

boolean IMSI__BSSGP::operator==(const IMSI__BSSGP& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_type__of__Identity==other_value.field_type__of__Identity
  && field_oddevenIndicator==other_value.field_oddevenIndicator
  && field_digits==other_value.field_digits;
}

boolean IMSI__BSSGP::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_type__of__Identity.is_bound())
  || (field_oddevenIndicator.is_bound())
  || (field_digits.is_bound());
}
boolean IMSI__BSSGP::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_type__of__Identity.is_value()
  && field_oddevenIndicator.is_value()
  && field_digits.is_value();
}
void IMSI__BSSGP::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", type_of_Identity := ");
field_type__of__Identity.log();
TTCN_Logger::log_event_str(", oddevenIndicator := ");
field_oddevenIndicator.log();
TTCN_Logger::log_event_str(", digits := ");
field_digits.log();
TTCN_Logger::log_event_str(" }");
}

void IMSI__BSSGP::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (type__of__Identity().is_bound()) type__of__Identity().set_implicit_omit();
if (oddevenIndicator().is_bound()) oddevenIndicator().set_implicit_omit();
if (digits().is_bound()) digits().set_implicit_omit();
}

void IMSI__BSSGP::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (6<param.get_size()) {
      param.error("record value of type @BSSGP_Types.IMSI_BSSGP has 6 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) type__of__Identity().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) oddevenIndicator().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) digits().set_param(*param.get_elem(5));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "type_of_Identity")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          type__of__Identity().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "oddevenIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          oddevenIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "digits")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          digits().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.IMSI_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.IMSI_BSSGP");
  }
}

void IMSI__BSSGP::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_type__of__Identity.encode_text(text_buf);
field_oddevenIndicator.encode_text(text_buf);
field_digits.encode_text(text_buf);
}

void IMSI__BSSGP::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_type__of__Identity.decode_text(text_buf);
field_oddevenIndicator.decode_text(text_buf);
field_digits.decode_text(text_buf);
}

void IMSI__BSSGP::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void IMSI__BSSGP::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int IMSI__BSSGP::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, IMSI__BSSGP_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(IMSI__BSSGP_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, IMSI__BSSGP_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(IMSI__BSSGP_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::BIT3_descr_.raw->forceomit);
  decoded_field_length = field_type__of__Identity.RAW_decode(General__Types::BIT3_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_4_force_omit(4, force_omit, General__Types::BIT1_descr_.raw->forceomit);
  decoded_field_length = field_oddevenIndicator.RAW_decode(General__Types::BIT1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_4_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_5_force_omit(5, force_omit, IMSI__BSSGP_digits_descr_.raw->forceomit);
  decoded_field_length = field_digits.RAW_decode(IMSI__BSSGP_digits_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_5_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_4) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int IMSI__BSSGP::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 6;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(6);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IMSI__BSSGP_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, IMSI__BSSGP_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::BIT3_descr_.raw);
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::BIT1_descr_.raw);
  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, IMSI__BSSGP_digits_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(IMSI__BSSGP_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(IMSI__BSSGP_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_type__of__Identity.RAW_encode(General__Types::BIT3_descr_, *myleaf.body.node.nodes[3]);
  encoded_length += field_oddevenIndicator.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[4]);
  encoded_length += field_digits.RAW_encode(IMSI__BSSGP_digits_descr_, *myleaf.body.node.nodes[5]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 3;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(3);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[1].level = myleaf.body.node.nodes[4]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[1].pos = myleaf.body.node.nodes[4]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[2].level = myleaf.body.node.nodes[5]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[2].pos = myleaf.body.node.nodes[5]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(IMSI__BSSGP_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(IMSI__BSSGP_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_4) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_4.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct IMSI__BSSGP_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
BITSTRING_template field_type__of__Identity;
BITSTRING_template field_oddevenIndicator;
HEXSTRING_template field_digits;
};

void IMSI__BSSGP_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_type__of__Identity = ANY_VALUE;
single_value->field_oddevenIndicator = ANY_VALUE;
single_value->field_digits = ANY_VALUE;
}
}
}

void IMSI__BSSGP_template::copy_value(const IMSI__BSSGP& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.type__of__Identity().is_bound()) {
  single_value->field_type__of__Identity = other_value.type__of__Identity();
} else {
  single_value->field_type__of__Identity.clean_up();
}
if (other_value.oddevenIndicator().is_bound()) {
  single_value->field_oddevenIndicator = other_value.oddevenIndicator();
} else {
  single_value->field_oddevenIndicator.clean_up();
}
if (other_value.digits().is_bound()) {
  single_value->field_digits = other_value.digits();
} else {
  single_value->field_digits.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void IMSI__BSSGP_template::copy_template(const IMSI__BSSGP_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.type__of__Identity().get_selection()) {
single_value->field_type__of__Identity = other_value.type__of__Identity();
} else {
single_value->field_type__of__Identity.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.oddevenIndicator().get_selection()) {
single_value->field_oddevenIndicator = other_value.oddevenIndicator();
} else {
single_value->field_oddevenIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.digits().get_selection()) {
single_value->field_digits = other_value.digits();
} else {
single_value->field_digits.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new IMSI__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new IMSI__BSSGP_template(*other_value.implication_.precondition);
implication_.implied_template = new IMSI__BSSGP_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.IMSI_BSSGP.");
break;
}
set_selection(other_value);
}

IMSI__BSSGP_template::IMSI__BSSGP_template()
{
}

IMSI__BSSGP_template::IMSI__BSSGP_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

IMSI__BSSGP_template::IMSI__BSSGP_template(const IMSI__BSSGP& other_value)
{
copy_value(other_value);
}

IMSI__BSSGP_template::IMSI__BSSGP_template(const OPTIONAL<IMSI__BSSGP>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const IMSI__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.IMSI_BSSGP from an unbound optional field.");
}
}

IMSI__BSSGP_template::IMSI__BSSGP_template(IMSI__BSSGP_template* p_precondition, IMSI__BSSGP_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

IMSI__BSSGP_template::IMSI__BSSGP_template(Dynamic_Match_Interface<IMSI__BSSGP>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<IMSI__BSSGP>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

IMSI__BSSGP_template::IMSI__BSSGP_template(const IMSI__BSSGP_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

IMSI__BSSGP_template::~IMSI__BSSGP_template()
{
clean_up();
}

IMSI__BSSGP_template& IMSI__BSSGP_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

IMSI__BSSGP_template& IMSI__BSSGP_template::operator=(const IMSI__BSSGP& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

IMSI__BSSGP_template& IMSI__BSSGP_template::operator=(const OPTIONAL<IMSI__BSSGP>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const IMSI__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.IMSI_BSSGP.");
}
return *this;
}

IMSI__BSSGP_template& IMSI__BSSGP_template::operator=(const IMSI__BSSGP_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean IMSI__BSSGP_template::match(const IMSI__BSSGP& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.type__of__Identity().is_bound()) return FALSE;
if(!single_value->field_type__of__Identity.match(other_value.type__of__Identity(), legacy))return FALSE;
if(!other_value.oddevenIndicator().is_bound()) return FALSE;
if(!single_value->field_oddevenIndicator.match(other_value.oddevenIndicator(), legacy))return FALSE;
if(!other_value.digits().is_bound()) return FALSE;
if(!single_value->field_digits.match(other_value.digits(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.IMSI_BSSGP.");
}
return FALSE;
}

boolean IMSI__BSSGP_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_type__of__Identity.is_bound()
 || single_value->field_oddevenIndicator.is_bound()
 || single_value->field_digits.is_bound();
}

boolean IMSI__BSSGP_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_type__of__Identity.is_value()
 && single_value->field_oddevenIndicator.is_value()
 && single_value->field_digits.is_value();
}

void IMSI__BSSGP_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

IMSI__BSSGP IMSI__BSSGP_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.IMSI_BSSGP.");
IMSI__BSSGP ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_type__of__Identity.is_bound()) {
ret_val.type__of__Identity() = single_value->field_type__of__Identity.valueof();
}
if (single_value->field_oddevenIndicator.is_bound()) {
ret_val.oddevenIndicator() = single_value->field_oddevenIndicator.valueof();
}
if (single_value->field_digits.is_bound()) {
ret_val.digits() = single_value->field_digits.valueof();
}
return ret_val;
}

void IMSI__BSSGP_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.IMSI_BSSGP.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new IMSI__BSSGP_template[list_length];
}

IMSI__BSSGP_template& IMSI__BSSGP_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.IMSI_BSSGP.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.IMSI_BSSGP.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& IMSI__BSSGP_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& IMSI__BSSGP_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.IMSI_BSSGP.");
return single_value->field_iEI;
}

BITSTRING_template& IMSI__BSSGP_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& IMSI__BSSGP_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.IMSI_BSSGP.");
return single_value->field_ext;
}

LIN2__2a_template& IMSI__BSSGP_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& IMSI__BSSGP_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.IMSI_BSSGP.");
return single_value->field_lengthIndicator;
}

BITSTRING_template& IMSI__BSSGP_template::type__of__Identity()
{
set_specific();
return single_value->field_type__of__Identity;
}

const BITSTRING_template& IMSI__BSSGP_template::type__of__Identity() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field type_of_Identity of a non-specific template of type @BSSGP_Types.IMSI_BSSGP.");
return single_value->field_type__of__Identity;
}

BITSTRING_template& IMSI__BSSGP_template::oddevenIndicator()
{
set_specific();
return single_value->field_oddevenIndicator;
}

const BITSTRING_template& IMSI__BSSGP_template::oddevenIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field oddevenIndicator of a non-specific template of type @BSSGP_Types.IMSI_BSSGP.");
return single_value->field_oddevenIndicator;
}

HEXSTRING_template& IMSI__BSSGP_template::digits()
{
set_specific();
return single_value->field_digits;
}

const HEXSTRING_template& IMSI__BSSGP_template::digits() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field digits of a non-specific template of type @BSSGP_Types.IMSI_BSSGP.");
return single_value->field_digits;
}

int IMSI__BSSGP_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_BSSGP which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 6;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_BSSGP containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_BSSGP containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_BSSGP containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_BSSGP containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_BSSGP containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_BSSGP containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_BSSGP containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_BSSGP containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.IMSI_BSSGP.");
  }
  return 0;
}

void IMSI__BSSGP_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", type_of_Identity := ");
single_value->field_type__of__Identity.log();
TTCN_Logger::log_event_str(", oddevenIndicator := ");
single_value->field_oddevenIndicator.log();
TTCN_Logger::log_event_str(", digits := ");
single_value->field_digits.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void IMSI__BSSGP_template::log_match(const IMSI__BSSGP& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_type__of__Identity.match(match_value.type__of__Identity(), legacy)){
TTCN_Logger::log_logmatch_info(".type_of_Identity");
single_value->field_type__of__Identity.log_match(match_value.type__of__Identity(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_oddevenIndicator.match(match_value.oddevenIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".oddevenIndicator");
single_value->field_oddevenIndicator.log_match(match_value.oddevenIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_digits.match(match_value.digits(), legacy)){
TTCN_Logger::log_logmatch_info(".digits");
single_value->field_digits.log_match(match_value.digits(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", type_of_Identity := ");
single_value->field_type__of__Identity.log_match(match_value.type__of__Identity(), legacy);
TTCN_Logger::log_event_str(", oddevenIndicator := ");
single_value->field_oddevenIndicator.log_match(match_value.oddevenIndicator(), legacy);
TTCN_Logger::log_event_str(", digits := ");
single_value->field_digits.log_match(match_value.digits(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void IMSI__BSSGP_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (type__of__Identity().is_bound()) type__of__Identity().set_implicit_omit();
if (oddevenIndicator().is_bound()) oddevenIndicator().set_implicit_omit();
if (digits().is_bound()) digits().set_implicit_omit();
}

void IMSI__BSSGP_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_type__of__Identity.encode_text(text_buf);
single_value->field_oddevenIndicator.encode_text(text_buf);
single_value->field_digits.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.IMSI_BSSGP.");
}
}

void IMSI__BSSGP_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_type__of__Identity.decode_text(text_buf);
single_value->field_oddevenIndicator.decode_text(text_buf);
single_value->field_digits.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new IMSI__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.IMSI_BSSGP.");
}
}

void IMSI__BSSGP_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    IMSI__BSSGP_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (6<param.get_size()) {
      param.error("record template of type @BSSGP_Types.IMSI_BSSGP has 6 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) type__of__Identity().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) oddevenIndicator().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) digits().set_param(*param.get_elem(5));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "type_of_Identity")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          type__of__Identity().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "oddevenIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          oddevenIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "digits")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          digits().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.IMSI_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    IMSI__BSSGP_template* precondition = new IMSI__BSSGP_template;
    precondition->set_param(*param.get_elem(0));
    IMSI__BSSGP_template* implied_template = new IMSI__BSSGP_template;
    implied_template->set_param(*param.get_elem(1));
    *this = IMSI__BSSGP_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.IMSI_BSSGP");
  }
  is_ifpresent = param.get_ifpresent();
}

void IMSI__BSSGP_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMSI_BSSGP");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMSI_BSSGP");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMSI_BSSGP");
single_value->field_type__of__Identity.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMSI_BSSGP");
single_value->field_oddevenIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMSI_BSSGP");
single_value->field_digits.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMSI_BSSGP");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.IMSI_BSSGP");
}

boolean IMSI__BSSGP_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean IMSI__BSSGP_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

LLC__PDU::LLC__PDU()
{
}

LLC__PDU::LLC__PDU(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_lLC__PDU)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_lLC__PDU(par_lLC__PDU)
{
}

LLC__PDU::LLC__PDU(const LLC__PDU& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.LLC_PDU.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.lLC__PDU().is_bound()) field_lLC__PDU = other_value.lLC__PDU();
else field_lLC__PDU.clean_up();
}

void LLC__PDU::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_lLC__PDU.clean_up();
}

const TTCN_Typedescriptor_t* LLC__PDU::get_descriptor() const { return &LLC__PDU_descr_; }
LLC__PDU& LLC__PDU::operator=(const LLC__PDU& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.LLC_PDU.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.lLC__PDU().is_bound()) field_lLC__PDU = other_value.lLC__PDU();
  else field_lLC__PDU.clean_up();
}
return *this;
}

boolean LLC__PDU::operator==(const LLC__PDU& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_lLC__PDU==other_value.field_lLC__PDU;
}

boolean LLC__PDU::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_lLC__PDU.is_bound());
}
boolean LLC__PDU::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_lLC__PDU.is_value();
}
void LLC__PDU::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", lLC_PDU := ");
field_lLC__PDU.log();
TTCN_Logger::log_event_str(" }");
}

void LLC__PDU::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (lLC__PDU().is_bound()) lLC__PDU().set_implicit_omit();
}

void LLC__PDU::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.LLC_PDU has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lLC__PDU().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lLC_PDU")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lLC__PDU().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LLC_PDU: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.LLC_PDU");
  }
}

void LLC__PDU::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_lLC__PDU.encode_text(text_buf);
}

void LLC__PDU::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_lLC__PDU.decode_text(text_buf);
}

void LLC__PDU::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void LLC__PDU::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int LLC__PDU::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, LLC__PDU_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(LLC__PDU_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, LLC__PDU_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(LLC__PDU_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, OCTETSTRING_descr_.raw->forceomit);
  decoded_field_length = field_lLC__PDU.RAW_decode(OCTETSTRING_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_20) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int LLC__PDU::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, LLC__PDU_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, LLC__PDU_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, OCTETSTRING_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(LLC__PDU_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(LLC__PDU_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_lLC__PDU.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(LLC__PDU_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(LLC__PDU_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_20) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_20.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct LLC__PDU_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_lLC__PDU;
};

void LLC__PDU_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_lLC__PDU = ANY_VALUE;
}
}
}

void LLC__PDU_template::copy_value(const LLC__PDU& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.lLC__PDU().is_bound()) {
  single_value->field_lLC__PDU = other_value.lLC__PDU();
} else {
  single_value->field_lLC__PDU.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void LLC__PDU_template::copy_template(const LLC__PDU_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lLC__PDU().get_selection()) {
single_value->field_lLC__PDU = other_value.lLC__PDU();
} else {
single_value->field_lLC__PDU.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new LLC__PDU_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new LLC__PDU_template(*other_value.implication_.precondition);
implication_.implied_template = new LLC__PDU_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.LLC_PDU.");
break;
}
set_selection(other_value);
}

LLC__PDU_template::LLC__PDU_template()
{
}

LLC__PDU_template::LLC__PDU_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

LLC__PDU_template::LLC__PDU_template(const LLC__PDU& other_value)
{
copy_value(other_value);
}

LLC__PDU_template::LLC__PDU_template(const OPTIONAL<LLC__PDU>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LLC__PDU&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.LLC_PDU from an unbound optional field.");
}
}

LLC__PDU_template::LLC__PDU_template(LLC__PDU_template* p_precondition, LLC__PDU_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

LLC__PDU_template::LLC__PDU_template(Dynamic_Match_Interface<LLC__PDU>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<LLC__PDU>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

LLC__PDU_template::LLC__PDU_template(const LLC__PDU_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

LLC__PDU_template::~LLC__PDU_template()
{
clean_up();
}

LLC__PDU_template& LLC__PDU_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

LLC__PDU_template& LLC__PDU_template::operator=(const LLC__PDU& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

LLC__PDU_template& LLC__PDU_template::operator=(const OPTIONAL<LLC__PDU>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LLC__PDU&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.LLC_PDU.");
}
return *this;
}

LLC__PDU_template& LLC__PDU_template::operator=(const LLC__PDU_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean LLC__PDU_template::match(const LLC__PDU& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.lLC__PDU().is_bound()) return FALSE;
if(!single_value->field_lLC__PDU.match(other_value.lLC__PDU(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.LLC_PDU.");
}
return FALSE;
}

boolean LLC__PDU_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_lLC__PDU.is_bound();
}

boolean LLC__PDU_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_lLC__PDU.is_value();
}

void LLC__PDU_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

LLC__PDU LLC__PDU_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.LLC_PDU.");
LLC__PDU ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_lLC__PDU.is_bound()) {
ret_val.lLC__PDU() = single_value->field_lLC__PDU.valueof();
}
return ret_val;
}

void LLC__PDU_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.LLC_PDU.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new LLC__PDU_template[list_length];
}

LLC__PDU_template& LLC__PDU_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.LLC_PDU.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.LLC_PDU.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& LLC__PDU_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& LLC__PDU_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.LLC_PDU.");
return single_value->field_iEI;
}

BITSTRING_template& LLC__PDU_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& LLC__PDU_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.LLC_PDU.");
return single_value->field_ext;
}

LIN2__2a_template& LLC__PDU_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& LLC__PDU_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.LLC_PDU.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& LLC__PDU_template::lLC__PDU()
{
set_specific();
return single_value->field_lLC__PDU;
}

const OCTETSTRING_template& LLC__PDU_template::lLC__PDU() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lLC_PDU of a non-specific template of type @BSSGP_Types.LLC_PDU.");
return single_value->field_lLC__PDU;
}

int LLC__PDU_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_PDU which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.LLC_PDU containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_PDU containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_PDU containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_PDU containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_PDU containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_PDU containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_PDU containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_PDU containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.LLC_PDU.");
  }
  return 0;
}

void LLC__PDU_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", lLC_PDU := ");
single_value->field_lLC__PDU.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void LLC__PDU_template::log_match(const LLC__PDU& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lLC__PDU.match(match_value.lLC__PDU(), legacy)){
TTCN_Logger::log_logmatch_info(".lLC_PDU");
single_value->field_lLC__PDU.log_match(match_value.lLC__PDU(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", lLC_PDU := ");
single_value->field_lLC__PDU.log_match(match_value.lLC__PDU(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void LLC__PDU_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (lLC__PDU().is_bound()) lLC__PDU().set_implicit_omit();
}

void LLC__PDU_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_lLC__PDU.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.LLC_PDU.");
}
}

void LLC__PDU_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_lLC__PDU.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new LLC__PDU_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.LLC_PDU.");
}
}

void LLC__PDU_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    LLC__PDU_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.LLC_PDU has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lLC__PDU().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lLC_PDU")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lLC__PDU().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LLC_PDU: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    LLC__PDU_template* precondition = new LLC__PDU_template;
    precondition->set_param(*param.get_elem(0));
    LLC__PDU_template* implied_template = new LLC__PDU_template;
    implied_template->set_param(*param.get_elem(1));
    *this = LLC__PDU_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.LLC_PDU");
  }
  is_ifpresent = param.get_ifpresent();
}

void LLC__PDU_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LLC_PDU");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LLC_PDU");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LLC_PDU");
single_value->field_lLC__PDU.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LLC_PDU");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.LLC_PDU");
}

boolean LLC__PDU_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean LLC__PDU_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

LLC__Frames__Discarded::LLC__Frames__Discarded()
{
}

LLC__Frames__Discarded::LLC__Frames__Discarded(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const HEXSTRING& par_number__of__frames__discarded)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_number__of__frames__discarded(par_number__of__frames__discarded)
{
}

LLC__Frames__Discarded::LLC__Frames__Discarded(const LLC__Frames__Discarded& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.LLC_Frames_Discarded.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.number__of__frames__discarded().is_bound()) field_number__of__frames__discarded = other_value.number__of__frames__discarded();
else field_number__of__frames__discarded.clean_up();
}

void LLC__Frames__Discarded::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_number__of__frames__discarded.clean_up();
}

const TTCN_Typedescriptor_t* LLC__Frames__Discarded::get_descriptor() const { return &LLC__Frames__Discarded_descr_; }
LLC__Frames__Discarded& LLC__Frames__Discarded::operator=(const LLC__Frames__Discarded& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.LLC_Frames_Discarded.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.number__of__frames__discarded().is_bound()) field_number__of__frames__discarded = other_value.number__of__frames__discarded();
  else field_number__of__frames__discarded.clean_up();
}
return *this;
}

boolean LLC__Frames__Discarded::operator==(const LLC__Frames__Discarded& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_number__of__frames__discarded==other_value.field_number__of__frames__discarded;
}

boolean LLC__Frames__Discarded::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_number__of__frames__discarded.is_bound());
}
boolean LLC__Frames__Discarded::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_number__of__frames__discarded.is_value();
}
void LLC__Frames__Discarded::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", number_of_frames_discarded := ");
field_number__of__frames__discarded.log();
TTCN_Logger::log_event_str(" }");
}

void LLC__Frames__Discarded::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (number__of__frames__discarded().is_bound()) number__of__frames__discarded().set_implicit_omit();
}

void LLC__Frames__Discarded::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.LLC_Frames_Discarded has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) number__of__frames__discarded().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "number_of_frames_discarded")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          number__of__frames__discarded().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LLC_Frames_Discarded: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.LLC_Frames_Discarded");
  }
}

void LLC__Frames__Discarded::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_number__of__frames__discarded.encode_text(text_buf);
}

void LLC__Frames__Discarded::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_number__of__frames__discarded.decode_text(text_buf);
}

void LLC__Frames__Discarded::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void LLC__Frames__Discarded::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int LLC__Frames__Discarded::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, LLC__Frames__Discarded_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(LLC__Frames__Discarded_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, LLC__Frames__Discarded_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(LLC__Frames__Discarded_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, LLC__Frames__Discarded_number__of__frames__discarded_descr_.raw->forceomit);
  decoded_field_length = field_number__of__frames__discarded.RAW_decode(LLC__Frames__Discarded_number__of__frames__discarded_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_47) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int LLC__Frames__Discarded::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, LLC__Frames__Discarded_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, LLC__Frames__Discarded_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, LLC__Frames__Discarded_number__of__frames__discarded_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(LLC__Frames__Discarded_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(LLC__Frames__Discarded_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_number__of__frames__discarded.RAW_encode(LLC__Frames__Discarded_number__of__frames__discarded_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(LLC__Frames__Discarded_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(LLC__Frames__Discarded_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_47) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_47.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct LLC__Frames__Discarded_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
HEXSTRING_template field_number__of__frames__discarded;
};

void LLC__Frames__Discarded_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_number__of__frames__discarded = ANY_VALUE;
}
}
}

void LLC__Frames__Discarded_template::copy_value(const LLC__Frames__Discarded& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.number__of__frames__discarded().is_bound()) {
  single_value->field_number__of__frames__discarded = other_value.number__of__frames__discarded();
} else {
  single_value->field_number__of__frames__discarded.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void LLC__Frames__Discarded_template::copy_template(const LLC__Frames__Discarded_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.number__of__frames__discarded().get_selection()) {
single_value->field_number__of__frames__discarded = other_value.number__of__frames__discarded();
} else {
single_value->field_number__of__frames__discarded.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new LLC__Frames__Discarded_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new LLC__Frames__Discarded_template(*other_value.implication_.precondition);
implication_.implied_template = new LLC__Frames__Discarded_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.LLC_Frames_Discarded.");
break;
}
set_selection(other_value);
}

LLC__Frames__Discarded_template::LLC__Frames__Discarded_template()
{
}

LLC__Frames__Discarded_template::LLC__Frames__Discarded_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

LLC__Frames__Discarded_template::LLC__Frames__Discarded_template(const LLC__Frames__Discarded& other_value)
{
copy_value(other_value);
}

LLC__Frames__Discarded_template::LLC__Frames__Discarded_template(const OPTIONAL<LLC__Frames__Discarded>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LLC__Frames__Discarded&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.LLC_Frames_Discarded from an unbound optional field.");
}
}

LLC__Frames__Discarded_template::LLC__Frames__Discarded_template(LLC__Frames__Discarded_template* p_precondition, LLC__Frames__Discarded_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

LLC__Frames__Discarded_template::LLC__Frames__Discarded_template(Dynamic_Match_Interface<LLC__Frames__Discarded>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<LLC__Frames__Discarded>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

LLC__Frames__Discarded_template::LLC__Frames__Discarded_template(const LLC__Frames__Discarded_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

LLC__Frames__Discarded_template::~LLC__Frames__Discarded_template()
{
clean_up();
}

LLC__Frames__Discarded_template& LLC__Frames__Discarded_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

LLC__Frames__Discarded_template& LLC__Frames__Discarded_template::operator=(const LLC__Frames__Discarded& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

LLC__Frames__Discarded_template& LLC__Frames__Discarded_template::operator=(const OPTIONAL<LLC__Frames__Discarded>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LLC__Frames__Discarded&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.LLC_Frames_Discarded.");
}
return *this;
}

LLC__Frames__Discarded_template& LLC__Frames__Discarded_template::operator=(const LLC__Frames__Discarded_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean LLC__Frames__Discarded_template::match(const LLC__Frames__Discarded& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.number__of__frames__discarded().is_bound()) return FALSE;
if(!single_value->field_number__of__frames__discarded.match(other_value.number__of__frames__discarded(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.LLC_Frames_Discarded.");
}
return FALSE;
}

boolean LLC__Frames__Discarded_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_number__of__frames__discarded.is_bound();
}

boolean LLC__Frames__Discarded_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_number__of__frames__discarded.is_value();
}

void LLC__Frames__Discarded_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

LLC__Frames__Discarded LLC__Frames__Discarded_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.LLC_Frames_Discarded.");
LLC__Frames__Discarded ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_number__of__frames__discarded.is_bound()) {
ret_val.number__of__frames__discarded() = single_value->field_number__of__frames__discarded.valueof();
}
return ret_val;
}

void LLC__Frames__Discarded_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.LLC_Frames_Discarded.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new LLC__Frames__Discarded_template[list_length];
}

LLC__Frames__Discarded_template& LLC__Frames__Discarded_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.LLC_Frames_Discarded.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.LLC_Frames_Discarded.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& LLC__Frames__Discarded_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& LLC__Frames__Discarded_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.LLC_Frames_Discarded.");
return single_value->field_iEI;
}

BITSTRING_template& LLC__Frames__Discarded_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& LLC__Frames__Discarded_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.LLC_Frames_Discarded.");
return single_value->field_ext;
}

LIN2__2a_template& LLC__Frames__Discarded_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& LLC__Frames__Discarded_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.LLC_Frames_Discarded.");
return single_value->field_lengthIndicator;
}

HEXSTRING_template& LLC__Frames__Discarded_template::number__of__frames__discarded()
{
set_specific();
return single_value->field_number__of__frames__discarded;
}

const HEXSTRING_template& LLC__Frames__Discarded_template::number__of__frames__discarded() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field number_of_frames_discarded of a non-specific template of type @BSSGP_Types.LLC_Frames_Discarded.");
return single_value->field_number__of__frames__discarded;
}

int LLC__Frames__Discarded_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_Frames_Discarded which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.LLC_Frames_Discarded containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_Frames_Discarded containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_Frames_Discarded containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_Frames_Discarded containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_Frames_Discarded containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_Frames_Discarded containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_Frames_Discarded containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LLC_Frames_Discarded containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.LLC_Frames_Discarded.");
  }
  return 0;
}

void LLC__Frames__Discarded_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", number_of_frames_discarded := ");
single_value->field_number__of__frames__discarded.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void LLC__Frames__Discarded_template::log_match(const LLC__Frames__Discarded& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_number__of__frames__discarded.match(match_value.number__of__frames__discarded(), legacy)){
TTCN_Logger::log_logmatch_info(".number_of_frames_discarded");
single_value->field_number__of__frames__discarded.log_match(match_value.number__of__frames__discarded(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", number_of_frames_discarded := ");
single_value->field_number__of__frames__discarded.log_match(match_value.number__of__frames__discarded(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void LLC__Frames__Discarded_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (number__of__frames__discarded().is_bound()) number__of__frames__discarded().set_implicit_omit();
}

void LLC__Frames__Discarded_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_number__of__frames__discarded.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.LLC_Frames_Discarded.");
}
}

void LLC__Frames__Discarded_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_number__of__frames__discarded.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new LLC__Frames__Discarded_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.LLC_Frames_Discarded.");
}
}

void LLC__Frames__Discarded_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    LLC__Frames__Discarded_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.LLC_Frames_Discarded has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) number__of__frames__discarded().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "number_of_frames_discarded")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          number__of__frames__discarded().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LLC_Frames_Discarded: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    LLC__Frames__Discarded_template* precondition = new LLC__Frames__Discarded_template;
    precondition->set_param(*param.get_elem(0));
    LLC__Frames__Discarded_template* implied_template = new LLC__Frames__Discarded_template;
    implied_template->set_param(*param.get_elem(1));
    *this = LLC__Frames__Discarded_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.LLC_Frames_Discarded");
  }
  is_ifpresent = param.get_ifpresent();
}

void LLC__Frames__Discarded_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LLC_Frames_Discarded");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LLC_Frames_Discarded");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LLC_Frames_Discarded");
single_value->field_number__of__frames__discarded.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LLC_Frames_Discarded");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.LLC_Frames_Discarded");
}

boolean LLC__Frames__Discarded_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean LLC__Frames__Discarded_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

Location__Area::Location__Area()
{
}

Location__Area::Location__Area(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const HEXSTRING& par_mccDigit1,
    const HEXSTRING& par_mccDigit2,
    const HEXSTRING& par_mccDigit3,
    const HEXSTRING& par_mncDigit3,
    const HEXSTRING& par_mncDigit1,
    const HEXSTRING& par_mncDigit2,
    const OCTETSTRING& par_lac)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_mccDigit1(par_mccDigit1),
  field_mccDigit2(par_mccDigit2),
  field_mccDigit3(par_mccDigit3),
  field_mncDigit3(par_mncDigit3),
  field_mncDigit1(par_mncDigit1),
  field_mncDigit2(par_mncDigit2),
  field_lac(par_lac)
{
}

Location__Area::Location__Area(const Location__Area& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.Location_Area.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.mccDigit1().is_bound()) field_mccDigit1 = other_value.mccDigit1();
else field_mccDigit1.clean_up();
if (other_value.mccDigit2().is_bound()) field_mccDigit2 = other_value.mccDigit2();
else field_mccDigit2.clean_up();
if (other_value.mccDigit3().is_bound()) field_mccDigit3 = other_value.mccDigit3();
else field_mccDigit3.clean_up();
if (other_value.mncDigit3().is_bound()) field_mncDigit3 = other_value.mncDigit3();
else field_mncDigit3.clean_up();
if (other_value.mncDigit1().is_bound()) field_mncDigit1 = other_value.mncDigit1();
else field_mncDigit1.clean_up();
if (other_value.mncDigit2().is_bound()) field_mncDigit2 = other_value.mncDigit2();
else field_mncDigit2.clean_up();
if (other_value.lac().is_bound()) field_lac = other_value.lac();
else field_lac.clean_up();
}

void Location__Area::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_mccDigit1.clean_up();
field_mccDigit2.clean_up();
field_mccDigit3.clean_up();
field_mncDigit3.clean_up();
field_mncDigit1.clean_up();
field_mncDigit2.clean_up();
field_lac.clean_up();
}

const TTCN_Typedescriptor_t* Location__Area::get_descriptor() const { return &Location__Area_descr_; }
Location__Area& Location__Area::operator=(const Location__Area& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.Location_Area.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.mccDigit1().is_bound()) field_mccDigit1 = other_value.mccDigit1();
  else field_mccDigit1.clean_up();
  if (other_value.mccDigit2().is_bound()) field_mccDigit2 = other_value.mccDigit2();
  else field_mccDigit2.clean_up();
  if (other_value.mccDigit3().is_bound()) field_mccDigit3 = other_value.mccDigit3();
  else field_mccDigit3.clean_up();
  if (other_value.mncDigit3().is_bound()) field_mncDigit3 = other_value.mncDigit3();
  else field_mncDigit3.clean_up();
  if (other_value.mncDigit1().is_bound()) field_mncDigit1 = other_value.mncDigit1();
  else field_mncDigit1.clean_up();
  if (other_value.mncDigit2().is_bound()) field_mncDigit2 = other_value.mncDigit2();
  else field_mncDigit2.clean_up();
  if (other_value.lac().is_bound()) field_lac = other_value.lac();
  else field_lac.clean_up();
}
return *this;
}

boolean Location__Area::operator==(const Location__Area& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_mccDigit1==other_value.field_mccDigit1
  && field_mccDigit2==other_value.field_mccDigit2
  && field_mccDigit3==other_value.field_mccDigit3
  && field_mncDigit3==other_value.field_mncDigit3
  && field_mncDigit1==other_value.field_mncDigit1
  && field_mncDigit2==other_value.field_mncDigit2
  && field_lac==other_value.field_lac;
}

boolean Location__Area::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_mccDigit1.is_bound())
  || (field_mccDigit2.is_bound())
  || (field_mccDigit3.is_bound())
  || (field_mncDigit3.is_bound())
  || (field_mncDigit1.is_bound())
  || (field_mncDigit2.is_bound())
  || (field_lac.is_bound());
}
boolean Location__Area::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_mccDigit1.is_value()
  && field_mccDigit2.is_value()
  && field_mccDigit3.is_value()
  && field_mncDigit3.is_value()
  && field_mncDigit1.is_value()
  && field_mncDigit2.is_value()
  && field_lac.is_value();
}
void Location__Area::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", mccDigit1 := ");
field_mccDigit1.log();
TTCN_Logger::log_event_str(", mccDigit2 := ");
field_mccDigit2.log();
TTCN_Logger::log_event_str(", mccDigit3 := ");
field_mccDigit3.log();
TTCN_Logger::log_event_str(", mncDigit3 := ");
field_mncDigit3.log();
TTCN_Logger::log_event_str(", mncDigit1 := ");
field_mncDigit1.log();
TTCN_Logger::log_event_str(", mncDigit2 := ");
field_mncDigit2.log();
TTCN_Logger::log_event_str(", lac := ");
field_lac.log();
TTCN_Logger::log_event_str(" }");
}

void Location__Area::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (mccDigit1().is_bound()) mccDigit1().set_implicit_omit();
if (mccDigit2().is_bound()) mccDigit2().set_implicit_omit();
if (mccDigit3().is_bound()) mccDigit3().set_implicit_omit();
if (mncDigit3().is_bound()) mncDigit3().set_implicit_omit();
if (mncDigit1().is_bound()) mncDigit1().set_implicit_omit();
if (mncDigit2().is_bound()) mncDigit2().set_implicit_omit();
if (lac().is_bound()) lac().set_implicit_omit();
}

void Location__Area::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (10<param.get_size()) {
      param.error("record value of type @BSSGP_Types.Location_Area has 10 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) mccDigit1().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) mccDigit2().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) mccDigit3().set_param(*param.get_elem(5));
    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) mncDigit3().set_param(*param.get_elem(6));
    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) mncDigit1().set_param(*param.get_elem(7));
    if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) mncDigit2().set_param(*param.get_elem(8));
    if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) lac().set_param(*param.get_elem(9));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lac")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lac().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Location_Area: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.Location_Area");
  }
}

void Location__Area::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_mccDigit1.encode_text(text_buf);
field_mccDigit2.encode_text(text_buf);
field_mccDigit3.encode_text(text_buf);
field_mncDigit3.encode_text(text_buf);
field_mncDigit1.encode_text(text_buf);
field_mncDigit2.encode_text(text_buf);
field_lac.encode_text(text_buf);
}

void Location__Area::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_mccDigit1.decode_text(text_buf);
field_mccDigit2.decode_text(text_buf);
field_mccDigit3.decode_text(text_buf);
field_mncDigit3.decode_text(text_buf);
field_mncDigit1.decode_text(text_buf);
field_mncDigit2.decode_text(text_buf);
field_lac.decode_text(text_buf);
}

void Location__Area::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void Location__Area::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int Location__Area::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, Location__Area_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(Location__Area_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, Location__Area_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(Location__Area_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mccDigit1.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_4_force_omit(4, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mccDigit2.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_4_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_5_force_omit(5, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mccDigit3.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_5_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_6_force_omit(6, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mncDigit3.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_6_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_7_force_omit(7, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mncDigit1.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_7_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_8_force_omit(8, force_omit, General__Types::HEX1_descr_.raw->forceomit);
  decoded_field_length = field_mncDigit2.RAW_decode(General__Types::HEX1_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_8_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  RAW_Force_Omit field_9_force_omit(9, force_omit, General__Types::OCT2_descr_.raw->forceomit);
  decoded_field_length = field_lac.RAW_decode(General__Types::OCT2_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_9_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_32) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int Location__Area::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 10;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(10);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Location__Area_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Location__Area_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, General__Types::HEX1_descr_.raw);
  myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, General__Types::OCT2_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(Location__Area_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(Location__Area_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_mccDigit1.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[3]);
  encoded_length += field_mccDigit2.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[4]);
  encoded_length += field_mccDigit3.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[5]);
  encoded_length += field_mncDigit3.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[6]);
  encoded_length += field_mncDigit1.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[7]);
  encoded_length += field_mncDigit2.RAW_encode(General__Types::HEX1_descr_, *myleaf.body.node.nodes[8]);
  encoded_length += field_lac.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[9]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 7;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(7);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[1].level = myleaf.body.node.nodes[4]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[1].pos = myleaf.body.node.nodes[4]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[2].level = myleaf.body.node.nodes[5]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[2].pos = myleaf.body.node.nodes[5]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[3].level = myleaf.body.node.nodes[6]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[3].pos = myleaf.body.node.nodes[6]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[4].level = myleaf.body.node.nodes[7]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[4].pos = myleaf.body.node.nodes[7]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[5].level = myleaf.body.node.nodes[8]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[5].pos = myleaf.body.node.nodes[8]->curr_pos.pos;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[6].level = myleaf.body.node.nodes[9]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[6].pos = myleaf.body.node.nodes[9]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(Location__Area_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(Location__Area_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_32) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_32.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct Location__Area_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
HEXSTRING_template field_mccDigit1;
HEXSTRING_template field_mccDigit2;
HEXSTRING_template field_mccDigit3;
HEXSTRING_template field_mncDigit3;
HEXSTRING_template field_mncDigit1;
HEXSTRING_template field_mncDigit2;
OCTETSTRING_template field_lac;
};

void Location__Area_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_mccDigit1 = ANY_VALUE;
single_value->field_mccDigit2 = ANY_VALUE;
single_value->field_mccDigit3 = ANY_VALUE;
single_value->field_mncDigit3 = ANY_VALUE;
single_value->field_mncDigit1 = ANY_VALUE;
single_value->field_mncDigit2 = ANY_VALUE;
single_value->field_lac = ANY_VALUE;
}
}
}

void Location__Area_template::copy_value(const Location__Area& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.mccDigit1().is_bound()) {
  single_value->field_mccDigit1 = other_value.mccDigit1();
} else {
  single_value->field_mccDigit1.clean_up();
}
if (other_value.mccDigit2().is_bound()) {
  single_value->field_mccDigit2 = other_value.mccDigit2();
} else {
  single_value->field_mccDigit2.clean_up();
}
if (other_value.mccDigit3().is_bound()) {
  single_value->field_mccDigit3 = other_value.mccDigit3();
} else {
  single_value->field_mccDigit3.clean_up();
}
if (other_value.mncDigit3().is_bound()) {
  single_value->field_mncDigit3 = other_value.mncDigit3();
} else {
  single_value->field_mncDigit3.clean_up();
}
if (other_value.mncDigit1().is_bound()) {
  single_value->field_mncDigit1 = other_value.mncDigit1();
} else {
  single_value->field_mncDigit1.clean_up();
}
if (other_value.mncDigit2().is_bound()) {
  single_value->field_mncDigit2 = other_value.mncDigit2();
} else {
  single_value->field_mncDigit2.clean_up();
}
if (other_value.lac().is_bound()) {
  single_value->field_lac = other_value.lac();
} else {
  single_value->field_lac.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void Location__Area_template::copy_template(const Location__Area_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mccDigit1().get_selection()) {
single_value->field_mccDigit1 = other_value.mccDigit1();
} else {
single_value->field_mccDigit1.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mccDigit2().get_selection()) {
single_value->field_mccDigit2 = other_value.mccDigit2();
} else {
single_value->field_mccDigit2.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mccDigit3().get_selection()) {
single_value->field_mccDigit3 = other_value.mccDigit3();
} else {
single_value->field_mccDigit3.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mncDigit3().get_selection()) {
single_value->field_mncDigit3 = other_value.mncDigit3();
} else {
single_value->field_mncDigit3.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mncDigit1().get_selection()) {
single_value->field_mncDigit1 = other_value.mncDigit1();
} else {
single_value->field_mncDigit1.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.mncDigit2().get_selection()) {
single_value->field_mncDigit2 = other_value.mncDigit2();
} else {
single_value->field_mncDigit2.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lac().get_selection()) {
single_value->field_lac = other_value.lac();
} else {
single_value->field_lac.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new Location__Area_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new Location__Area_template(*other_value.implication_.precondition);
implication_.implied_template = new Location__Area_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.Location_Area.");
break;
}
set_selection(other_value);
}

Location__Area_template::Location__Area_template()
{
}

Location__Area_template::Location__Area_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

Location__Area_template::Location__Area_template(const Location__Area& other_value)
{
copy_value(other_value);
}

Location__Area_template::Location__Area_template(const OPTIONAL<Location__Area>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Location__Area&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.Location_Area from an unbound optional field.");
}
}

Location__Area_template::Location__Area_template(Location__Area_template* p_precondition, Location__Area_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

Location__Area_template::Location__Area_template(Dynamic_Match_Interface<Location__Area>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<Location__Area>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

Location__Area_template::Location__Area_template(const Location__Area_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

Location__Area_template::~Location__Area_template()
{
clean_up();
}

Location__Area_template& Location__Area_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

Location__Area_template& Location__Area_template::operator=(const Location__Area& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

Location__Area_template& Location__Area_template::operator=(const OPTIONAL<Location__Area>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const Location__Area&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.Location_Area.");
}
return *this;
}

Location__Area_template& Location__Area_template::operator=(const Location__Area_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean Location__Area_template::match(const Location__Area& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.mccDigit1().is_bound()) return FALSE;
if(!single_value->field_mccDigit1.match(other_value.mccDigit1(), legacy))return FALSE;
if(!other_value.mccDigit2().is_bound()) return FALSE;
if(!single_value->field_mccDigit2.match(other_value.mccDigit2(), legacy))return FALSE;
if(!other_value.mccDigit3().is_bound()) return FALSE;
if(!single_value->field_mccDigit3.match(other_value.mccDigit3(), legacy))return FALSE;
if(!other_value.mncDigit3().is_bound()) return FALSE;
if(!single_value->field_mncDigit3.match(other_value.mncDigit3(), legacy))return FALSE;
if(!other_value.mncDigit1().is_bound()) return FALSE;
if(!single_value->field_mncDigit1.match(other_value.mncDigit1(), legacy))return FALSE;
if(!other_value.mncDigit2().is_bound()) return FALSE;
if(!single_value->field_mncDigit2.match(other_value.mncDigit2(), legacy))return FALSE;
if(!other_value.lac().is_bound()) return FALSE;
if(!single_value->field_lac.match(other_value.lac(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.Location_Area.");
}
return FALSE;
}

boolean Location__Area_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_mccDigit1.is_bound()
 || single_value->field_mccDigit2.is_bound()
 || single_value->field_mccDigit3.is_bound()
 || single_value->field_mncDigit3.is_bound()
 || single_value->field_mncDigit1.is_bound()
 || single_value->field_mncDigit2.is_bound()
 || single_value->field_lac.is_bound();
}

boolean Location__Area_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_mccDigit1.is_value()
 && single_value->field_mccDigit2.is_value()
 && single_value->field_mccDigit3.is_value()
 && single_value->field_mncDigit3.is_value()
 && single_value->field_mncDigit1.is_value()
 && single_value->field_mncDigit2.is_value()
 && single_value->field_lac.is_value();
}

void Location__Area_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

Location__Area Location__Area_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.Location_Area.");
Location__Area ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_mccDigit1.is_bound()) {
ret_val.mccDigit1() = single_value->field_mccDigit1.valueof();
}
if (single_value->field_mccDigit2.is_bound()) {
ret_val.mccDigit2() = single_value->field_mccDigit2.valueof();
}
if (single_value->field_mccDigit3.is_bound()) {
ret_val.mccDigit3() = single_value->field_mccDigit3.valueof();
}
if (single_value->field_mncDigit3.is_bound()) {
ret_val.mncDigit3() = single_value->field_mncDigit3.valueof();
}
if (single_value->field_mncDigit1.is_bound()) {
ret_val.mncDigit1() = single_value->field_mncDigit1.valueof();
}
if (single_value->field_mncDigit2.is_bound()) {
ret_val.mncDigit2() = single_value->field_mncDigit2.valueof();
}
if (single_value->field_lac.is_bound()) {
ret_val.lac() = single_value->field_lac.valueof();
}
return ret_val;
}

void Location__Area_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.Location_Area.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new Location__Area_template[list_length];
}

Location__Area_template& Location__Area_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.Location_Area.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.Location_Area.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& Location__Area_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& Location__Area_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.Location_Area.");
return single_value->field_iEI;
}

BITSTRING_template& Location__Area_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& Location__Area_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.Location_Area.");
return single_value->field_ext;
}

LIN2__2a_template& Location__Area_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& Location__Area_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.Location_Area.");
return single_value->field_lengthIndicator;
}

HEXSTRING_template& Location__Area_template::mccDigit1()
{
set_specific();
return single_value->field_mccDigit1;
}

const HEXSTRING_template& Location__Area_template::mccDigit1() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mccDigit1 of a non-specific template of type @BSSGP_Types.Location_Area.");
return single_value->field_mccDigit1;
}

HEXSTRING_template& Location__Area_template::mccDigit2()
{
set_specific();
return single_value->field_mccDigit2;
}

const HEXSTRING_template& Location__Area_template::mccDigit2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mccDigit2 of a non-specific template of type @BSSGP_Types.Location_Area.");
return single_value->field_mccDigit2;
}

HEXSTRING_template& Location__Area_template::mccDigit3()
{
set_specific();
return single_value->field_mccDigit3;
}

const HEXSTRING_template& Location__Area_template::mccDigit3() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mccDigit3 of a non-specific template of type @BSSGP_Types.Location_Area.");
return single_value->field_mccDigit3;
}

HEXSTRING_template& Location__Area_template::mncDigit3()
{
set_specific();
return single_value->field_mncDigit3;
}

const HEXSTRING_template& Location__Area_template::mncDigit3() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mncDigit3 of a non-specific template of type @BSSGP_Types.Location_Area.");
return single_value->field_mncDigit3;
}

HEXSTRING_template& Location__Area_template::mncDigit1()
{
set_specific();
return single_value->field_mncDigit1;
}

const HEXSTRING_template& Location__Area_template::mncDigit1() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mncDigit1 of a non-specific template of type @BSSGP_Types.Location_Area.");
return single_value->field_mncDigit1;
}

HEXSTRING_template& Location__Area_template::mncDigit2()
{
set_specific();
return single_value->field_mncDigit2;
}

const HEXSTRING_template& Location__Area_template::mncDigit2() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field mncDigit2 of a non-specific template of type @BSSGP_Types.Location_Area.");
return single_value->field_mncDigit2;
}

OCTETSTRING_template& Location__Area_template::lac()
{
set_specific();
return single_value->field_lac;
}

const OCTETSTRING_template& Location__Area_template::lac() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lac of a non-specific template of type @BSSGP_Types.Location_Area.");
return single_value->field_lac;
}

int Location__Area_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Location_Area which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 10;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.Location_Area containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Location_Area containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Location_Area containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Location_Area containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Location_Area containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Location_Area containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Location_Area containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.Location_Area containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.Location_Area.");
  }
  return 0;
}

void Location__Area_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", mccDigit1 := ");
single_value->field_mccDigit1.log();
TTCN_Logger::log_event_str(", mccDigit2 := ");
single_value->field_mccDigit2.log();
TTCN_Logger::log_event_str(", mccDigit3 := ");
single_value->field_mccDigit3.log();
TTCN_Logger::log_event_str(", mncDigit3 := ");
single_value->field_mncDigit3.log();
TTCN_Logger::log_event_str(", mncDigit1 := ");
single_value->field_mncDigit1.log();
TTCN_Logger::log_event_str(", mncDigit2 := ");
single_value->field_mncDigit2.log();
TTCN_Logger::log_event_str(", lac := ");
single_value->field_lac.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void Location__Area_template::log_match(const Location__Area& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mccDigit1.match(match_value.mccDigit1(), legacy)){
TTCN_Logger::log_logmatch_info(".mccDigit1");
single_value->field_mccDigit1.log_match(match_value.mccDigit1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mccDigit2.match(match_value.mccDigit2(), legacy)){
TTCN_Logger::log_logmatch_info(".mccDigit2");
single_value->field_mccDigit2.log_match(match_value.mccDigit2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mccDigit3.match(match_value.mccDigit3(), legacy)){
TTCN_Logger::log_logmatch_info(".mccDigit3");
single_value->field_mccDigit3.log_match(match_value.mccDigit3(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mncDigit3.match(match_value.mncDigit3(), legacy)){
TTCN_Logger::log_logmatch_info(".mncDigit3");
single_value->field_mncDigit3.log_match(match_value.mncDigit3(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mncDigit1.match(match_value.mncDigit1(), legacy)){
TTCN_Logger::log_logmatch_info(".mncDigit1");
single_value->field_mncDigit1.log_match(match_value.mncDigit1(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_mncDigit2.match(match_value.mncDigit2(), legacy)){
TTCN_Logger::log_logmatch_info(".mncDigit2");
single_value->field_mncDigit2.log_match(match_value.mncDigit2(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lac.match(match_value.lac(), legacy)){
TTCN_Logger::log_logmatch_info(".lac");
single_value->field_lac.log_match(match_value.lac(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", mccDigit1 := ");
single_value->field_mccDigit1.log_match(match_value.mccDigit1(), legacy);
TTCN_Logger::log_event_str(", mccDigit2 := ");
single_value->field_mccDigit2.log_match(match_value.mccDigit2(), legacy);
TTCN_Logger::log_event_str(", mccDigit3 := ");
single_value->field_mccDigit3.log_match(match_value.mccDigit3(), legacy);
TTCN_Logger::log_event_str(", mncDigit3 := ");
single_value->field_mncDigit3.log_match(match_value.mncDigit3(), legacy);
TTCN_Logger::log_event_str(", mncDigit1 := ");
single_value->field_mncDigit1.log_match(match_value.mncDigit1(), legacy);
TTCN_Logger::log_event_str(", mncDigit2 := ");
single_value->field_mncDigit2.log_match(match_value.mncDigit2(), legacy);
TTCN_Logger::log_event_str(", lac := ");
single_value->field_lac.log_match(match_value.lac(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void Location__Area_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (mccDigit1().is_bound()) mccDigit1().set_implicit_omit();
if (mccDigit2().is_bound()) mccDigit2().set_implicit_omit();
if (mccDigit3().is_bound()) mccDigit3().set_implicit_omit();
if (mncDigit3().is_bound()) mncDigit3().set_implicit_omit();
if (mncDigit1().is_bound()) mncDigit1().set_implicit_omit();
if (mncDigit2().is_bound()) mncDigit2().set_implicit_omit();
if (lac().is_bound()) lac().set_implicit_omit();
}

void Location__Area_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_mccDigit1.encode_text(text_buf);
single_value->field_mccDigit2.encode_text(text_buf);
single_value->field_mccDigit3.encode_text(text_buf);
single_value->field_mncDigit3.encode_text(text_buf);
single_value->field_mncDigit1.encode_text(text_buf);
single_value->field_mncDigit2.encode_text(text_buf);
single_value->field_lac.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.Location_Area.");
}
}

void Location__Area_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_mccDigit1.decode_text(text_buf);
single_value->field_mccDigit2.decode_text(text_buf);
single_value->field_mccDigit3.decode_text(text_buf);
single_value->field_mncDigit3.decode_text(text_buf);
single_value->field_mncDigit1.decode_text(text_buf);
single_value->field_mncDigit2.decode_text(text_buf);
single_value->field_lac.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new Location__Area_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.Location_Area.");
}
}

void Location__Area_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    Location__Area_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (10<param.get_size()) {
      param.error("record template of type @BSSGP_Types.Location_Area has 10 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) mccDigit1().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) mccDigit2().set_param(*param.get_elem(4));
    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) mccDigit3().set_param(*param.get_elem(5));
    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) mncDigit3().set_param(*param.get_elem(6));
    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) mncDigit1().set_param(*param.get_elem(7));
    if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) mncDigit2().set_param(*param.get_elem(8));
    if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) lac().set_param(*param.get_elem(9));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mccDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mccDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit3")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit3().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit1")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit1().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "mncDigit2")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          mncDigit2().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lac")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lac().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.Location_Area: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    Location__Area_template* precondition = new Location__Area_template;
    precondition->set_param(*param.get_elem(0));
    Location__Area_template* implied_template = new Location__Area_template;
    implied_template->set_param(*param.get_elem(1));
    *this = Location__Area_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.Location_Area");
  }
  is_ifpresent = param.get_ifpresent();
}

void Location__Area_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Location_Area");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Location_Area");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Location_Area");
single_value->field_mccDigit1.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Location_Area");
single_value->field_mccDigit2.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Location_Area");
single_value->field_mccDigit3.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Location_Area");
single_value->field_mncDigit3.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Location_Area");
single_value->field_mncDigit1.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Location_Area");
single_value->field_mncDigit2.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Location_Area");
single_value->field_lac.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.Location_Area");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.Location_Area");
}

boolean Location__Area_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean Location__Area_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

LSA__Identifier__List__BSSGP::LSA__Identifier__List__BSSGP()
{
}

LSA__Identifier__List__BSSGP::LSA__Identifier__List__BSSGP(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const OCTETSTRING& par_lSA__Identifier__List)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_lSA__Identifier__List(par_lSA__Identifier__List)
{
}

LSA__Identifier__List__BSSGP::LSA__Identifier__List__BSSGP(const LSA__Identifier__List__BSSGP& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.lSA__Identifier__List().is_bound()) field_lSA__Identifier__List = other_value.lSA__Identifier__List();
else field_lSA__Identifier__List.clean_up();
}

void LSA__Identifier__List__BSSGP::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_lSA__Identifier__List.clean_up();
}

const TTCN_Typedescriptor_t* LSA__Identifier__List__BSSGP::get_descriptor() const { return &LSA__Identifier__List__BSSGP_descr_; }
LSA__Identifier__List__BSSGP& LSA__Identifier__List__BSSGP::operator=(const LSA__Identifier__List__BSSGP& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.lSA__Identifier__List().is_bound()) field_lSA__Identifier__List = other_value.lSA__Identifier__List();
  else field_lSA__Identifier__List.clean_up();
}
return *this;
}

boolean LSA__Identifier__List__BSSGP::operator==(const LSA__Identifier__List__BSSGP& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_lSA__Identifier__List==other_value.field_lSA__Identifier__List;
}

boolean LSA__Identifier__List__BSSGP::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_lSA__Identifier__List.is_bound());
}
boolean LSA__Identifier__List__BSSGP::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_lSA__Identifier__List.is_value();
}
void LSA__Identifier__List__BSSGP::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", lSA_Identifier_List := ");
field_lSA__Identifier__List.log();
TTCN_Logger::log_event_str(" }");
}

void LSA__Identifier__List__BSSGP::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (lSA__Identifier__List().is_bound()) lSA__Identifier__List().set_implicit_omit();
}

void LSA__Identifier__List__BSSGP::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.LSA_Identifier_List_BSSGP has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lSA__Identifier__List().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lSA_Identifier_List")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lSA__Identifier__List().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LSA_Identifier_List_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.LSA_Identifier_List_BSSGP");
  }
}

void LSA__Identifier__List__BSSGP::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_lSA__Identifier__List.encode_text(text_buf);
}

void LSA__Identifier__List__BSSGP::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_lSA__Identifier__List.decode_text(text_buf);
}

void LSA__Identifier__List__BSSGP::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void LSA__Identifier__List__BSSGP::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int LSA__Identifier__List__BSSGP::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, LSA__Identifier__List__BSSGP_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(LSA__Identifier__List__BSSGP_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, LSA__Identifier__List__BSSGP_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(LSA__Identifier__List__BSSGP_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, OCTETSTRING_descr_.raw->forceomit);
  decoded_field_length = field_lSA__Identifier__List.RAW_decode(OCTETSTRING_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_22) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int LSA__Identifier__List__BSSGP::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, LSA__Identifier__List__BSSGP_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, LSA__Identifier__List__BSSGP_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, OCTETSTRING_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(LSA__Identifier__List__BSSGP_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(LSA__Identifier__List__BSSGP_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_lSA__Identifier__List.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(LSA__Identifier__List__BSSGP_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(LSA__Identifier__List__BSSGP_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_22) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_22.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct LSA__Identifier__List__BSSGP_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
OCTETSTRING_template field_lSA__Identifier__List;
};

void LSA__Identifier__List__BSSGP_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_lSA__Identifier__List = ANY_VALUE;
}
}
}

void LSA__Identifier__List__BSSGP_template::copy_value(const LSA__Identifier__List__BSSGP& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.lSA__Identifier__List().is_bound()) {
  single_value->field_lSA__Identifier__List = other_value.lSA__Identifier__List();
} else {
  single_value->field_lSA__Identifier__List.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void LSA__Identifier__List__BSSGP_template::copy_template(const LSA__Identifier__List__BSSGP_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lSA__Identifier__List().get_selection()) {
single_value->field_lSA__Identifier__List = other_value.lSA__Identifier__List();
} else {
single_value->field_lSA__Identifier__List.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new LSA__Identifier__List__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new LSA__Identifier__List__BSSGP_template(*other_value.implication_.precondition);
implication_.implied_template = new LSA__Identifier__List__BSSGP_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
break;
}
set_selection(other_value);
}

LSA__Identifier__List__BSSGP_template::LSA__Identifier__List__BSSGP_template()
{
}

LSA__Identifier__List__BSSGP_template::LSA__Identifier__List__BSSGP_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

LSA__Identifier__List__BSSGP_template::LSA__Identifier__List__BSSGP_template(const LSA__Identifier__List__BSSGP& other_value)
{
copy_value(other_value);
}

LSA__Identifier__List__BSSGP_template::LSA__Identifier__List__BSSGP_template(const OPTIONAL<LSA__Identifier__List__BSSGP>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LSA__Identifier__List__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP from an unbound optional field.");
}
}

LSA__Identifier__List__BSSGP_template::LSA__Identifier__List__BSSGP_template(LSA__Identifier__List__BSSGP_template* p_precondition, LSA__Identifier__List__BSSGP_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

LSA__Identifier__List__BSSGP_template::LSA__Identifier__List__BSSGP_template(Dynamic_Match_Interface<LSA__Identifier__List__BSSGP>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<LSA__Identifier__List__BSSGP>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

LSA__Identifier__List__BSSGP_template::LSA__Identifier__List__BSSGP_template(const LSA__Identifier__List__BSSGP_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

LSA__Identifier__List__BSSGP_template::~LSA__Identifier__List__BSSGP_template()
{
clean_up();
}

LSA__Identifier__List__BSSGP_template& LSA__Identifier__List__BSSGP_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

LSA__Identifier__List__BSSGP_template& LSA__Identifier__List__BSSGP_template::operator=(const LSA__Identifier__List__BSSGP& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

LSA__Identifier__List__BSSGP_template& LSA__Identifier__List__BSSGP_template::operator=(const OPTIONAL<LSA__Identifier__List__BSSGP>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LSA__Identifier__List__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
}
return *this;
}

LSA__Identifier__List__BSSGP_template& LSA__Identifier__List__BSSGP_template::operator=(const LSA__Identifier__List__BSSGP_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean LSA__Identifier__List__BSSGP_template::match(const LSA__Identifier__List__BSSGP& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.lSA__Identifier__List().is_bound()) return FALSE;
if(!single_value->field_lSA__Identifier__List.match(other_value.lSA__Identifier__List(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
}
return FALSE;
}

boolean LSA__Identifier__List__BSSGP_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_lSA__Identifier__List.is_bound();
}

boolean LSA__Identifier__List__BSSGP_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_lSA__Identifier__List.is_value();
}

void LSA__Identifier__List__BSSGP_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

LSA__Identifier__List__BSSGP LSA__Identifier__List__BSSGP_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
LSA__Identifier__List__BSSGP ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_lSA__Identifier__List.is_bound()) {
ret_val.lSA__Identifier__List() = single_value->field_lSA__Identifier__List.valueof();
}
return ret_val;
}

void LSA__Identifier__List__BSSGP_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new LSA__Identifier__List__BSSGP_template[list_length];
}

LSA__Identifier__List__BSSGP_template& LSA__Identifier__List__BSSGP_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& LSA__Identifier__List__BSSGP_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& LSA__Identifier__List__BSSGP_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
return single_value->field_iEI;
}

BITSTRING_template& LSA__Identifier__List__BSSGP_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& LSA__Identifier__List__BSSGP_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
return single_value->field_ext;
}

LIN2__2a_template& LSA__Identifier__List__BSSGP_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& LSA__Identifier__List__BSSGP_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
return single_value->field_lengthIndicator;
}

OCTETSTRING_template& LSA__Identifier__List__BSSGP_template::lSA__Identifier__List()
{
set_specific();
return single_value->field_lSA__Identifier__List;
}

const OCTETSTRING_template& LSA__Identifier__List__BSSGP_template::lSA__Identifier__List() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lSA_Identifier_List of a non-specific template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
return single_value->field_lSA__Identifier__List;
}

int LSA__Identifier__List__BSSGP_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
  }
  return 0;
}

void LSA__Identifier__List__BSSGP_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", lSA_Identifier_List := ");
single_value->field_lSA__Identifier__List.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void LSA__Identifier__List__BSSGP_template::log_match(const LSA__Identifier__List__BSSGP& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lSA__Identifier__List.match(match_value.lSA__Identifier__List(), legacy)){
TTCN_Logger::log_logmatch_info(".lSA_Identifier_List");
single_value->field_lSA__Identifier__List.log_match(match_value.lSA__Identifier__List(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", lSA_Identifier_List := ");
single_value->field_lSA__Identifier__List.log_match(match_value.lSA__Identifier__List(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void LSA__Identifier__List__BSSGP_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (lSA__Identifier__List().is_bound()) lSA__Identifier__List().set_implicit_omit();
}

void LSA__Identifier__List__BSSGP_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_lSA__Identifier__List.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
}
}

void LSA__Identifier__List__BSSGP_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_lSA__Identifier__List.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new LSA__Identifier__List__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.LSA_Identifier_List_BSSGP.");
}
}

void LSA__Identifier__List__BSSGP_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    LSA__Identifier__List__BSSGP_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.LSA_Identifier_List_BSSGP has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lSA__Identifier__List().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lSA_Identifier_List")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lSA__Identifier__List().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LSA_Identifier_List_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    LSA__Identifier__List__BSSGP_template* precondition = new LSA__Identifier__List__BSSGP_template;
    precondition->set_param(*param.get_elem(0));
    LSA__Identifier__List__BSSGP_template* implied_template = new LSA__Identifier__List__BSSGP_template;
    implied_template->set_param(*param.get_elem(1));
    *this = LSA__Identifier__List__BSSGP_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.LSA_Identifier_List_BSSGP");
  }
  is_ifpresent = param.get_ifpresent();
}

void LSA__Identifier__List__BSSGP_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Identifier_List_BSSGP");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Identifier_List_BSSGP");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Identifier_List_BSSGP");
single_value->field_lSA__Identifier__List.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Identifier_List_BSSGP");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.LSA_Identifier_List_BSSGP");
}

boolean LSA__Identifier__List__BSSGP_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean LSA__Identifier__List__BSSGP_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}


const LSA__Identification__and__Attributes LSA__Identification__and__Attributes__List::UNBOUND_ELEM;
LSA__Identification__and__Attributes__List::LSA__Identification__and__Attributes__List()
{
val_ptr = NULL;
}

LSA__Identification__and__Attributes__List::LSA__Identification__and__Attributes__List(null_type)
{
val_ptr = new recordof_setof_struct;
val_ptr->ref_count = 1;
val_ptr->n_elements = 0;
val_ptr->value_elements = NULL;
}

LSA__Identification__and__Attributes__List::LSA__Identification__and__Attributes__List(const LSA__Identification__and__Attributes__List& other_value)
{
if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
val_ptr = other_value.val_ptr;
val_ptr->ref_count++;
}

LSA__Identification__and__Attributes__List::~LSA__Identification__and__Attributes__List()
{
clean_up();
if (val_ptr != NULL) val_ptr = NULL;
}

void LSA__Identification__and__Attributes__List::clean_up()
{
if (val_ptr != NULL) {
if (val_ptr->ref_count > 1) {
val_ptr->ref_count--;
val_ptr = NULL;
}
else if (val_ptr->ref_count == 1) {
for (int elem_count = 0; elem_count < val_ptr->n_elements;
elem_count++)
if (val_ptr->value_elements[elem_count] != NULL)
delete val_ptr->value_elements[elem_count];
free_pointers((void**)val_ptr->value_elements);
delete val_ptr;
val_ptr = NULL;
}
else
TTCN_error("Internal error: Invalid reference counter in a record of/set of value.");
}
}

LSA__Identification__and__Attributes__List& LSA__Identification__and__Attributes__List::operator=(null_type)
{
clean_up();
val_ptr = new recordof_setof_struct;
val_ptr->ref_count = 1;
val_ptr->n_elements = 0;
val_ptr->value_elements = NULL;
return *this;
}

LSA__Identification__and__Attributes__List& LSA__Identification__and__Attributes__List::operator=(const LSA__Identification__and__Attributes__List& other_value)
{
if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
if (this != &other_value) {
clean_up();
val_ptr = other_value.val_ptr;
val_ptr->ref_count++;
}
return *this;
}

boolean LSA__Identification__and__Attributes__List::operator==(null_type) const
{
if (val_ptr == NULL)
TTCN_error("The left operand of comparison is an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
return val_ptr->n_elements == 0 ;
}

boolean LSA__Identification__and__Attributes__List::operator==(const LSA__Identification__and__Attributes__List& other_value) const
{
if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
if (val_ptr == other_value.val_ptr) return TRUE;
if (val_ptr->n_elements != (other_value.val_ptr)->n_elements)
return FALSE;
for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){
if (val_ptr->value_elements[elem_count] != NULL){
if ((other_value.val_ptr)->value_elements[elem_count] != NULL){
  if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE;
} else return FALSE;
} else {
if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE;
}
}
return TRUE;
}

LSA__Identification__and__Attributes& LSA__Identification__and__Attributes__List::operator[](int index_value)
{
if (index_value < 0) TTCN_error("Accessing an element of type @BSSGP_Types.LSA_Identification_and_Attributes_List using a negative index: %d.", index_value);
if (val_ptr == NULL) {
val_ptr = new recordof_setof_struct;
val_ptr->ref_count = 1;
val_ptr->n_elements = 0;
val_ptr->value_elements = NULL;
} else if (val_ptr->ref_count > 1) {
struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct;
new_val_ptr->ref_count = 1;
new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements;
new_val_ptr->value_elements = (LSA__Identification__and__Attributes**)allocate_pointers(new_val_ptr->n_elements);
for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){
if (val_ptr->value_elements[elem_count] != NULL){
new_val_ptr->value_elements[elem_count] = new LSA__Identification__and__Attributes(*(val_ptr->value_elements[elem_count]));
}
}
clean_up();
val_ptr = new_val_ptr;
}
if (index_value >= val_ptr->n_elements) set_size(index_value + 1);
if (val_ptr->value_elements[index_value] == NULL) {
val_ptr->value_elements[index_value] = new LSA__Identification__and__Attributes;
}
return *val_ptr->value_elements[index_value];
}

LSA__Identification__and__Attributes& LSA__Identification__and__Attributes__List::operator[](const INTEGER& index_value)
{
index_value.must_bound("Using an unbound integer value for indexing a value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
return (*this)[(int)index_value];
}

const LSA__Identification__and__Attributes& LSA__Identification__and__Attributes__List::operator[](int index_value) const
{
if (val_ptr == NULL)
TTCN_error("Accessing an element in an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
if (index_value < 0) TTCN_error("Accessing an element of type @BSSGP_Types.LSA_Identification_and_Attributes_List using a negative index: %d.", index_value);
if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @BSSGP_Types.LSA_Identification_and_Attributes_List: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements);
return (val_ptr->value_elements[index_value] == NULL) ?
UNBOUND_ELEM : *val_ptr->value_elements[index_value];
}

const LSA__Identification__and__Attributes& LSA__Identification__and__Attributes__List::operator[](const INTEGER& index_value) const
{
index_value.must_bound("Using an unbound integer value for indexing a value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
return (*this)[(int)index_value];
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List::operator<<=(int rotate_count) const
{
return *this >>= (-rotate_count);
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List::operator<<=(const INTEGER& rotate_count) const
{
rotate_count.must_bound("Unbound integer operand of rotate left operator.");
return *this >>= (int)(-rotate_count);
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List::operator>>=(const INTEGER& rotate_count) const
{
rotate_count.must_bound("Unbound integer operand of rotate right operator.");
return *this >>= (int)rotate_count;
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List::operator>>=(int rotate_count) const
{
if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
if (val_ptr->n_elements == 0) return *this;
int rc;
if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements;
else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements);
if (rc == 0) return *this;
LSA__Identification__and__Attributes__List ret_val;
ret_val.set_size(val_ptr->n_elements);
for (int i=0; i<val_ptr->n_elements; i++) {
if (val_ptr->value_elements[i] != NULL) {
ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new LSA__Identification__and__Attributes(*val_ptr->value_elements[i]);
}
}
return ret_val;
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List::operator+(const LSA__Identification__and__Attributes__List& other_value) const
{
if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @BSSGP_Types.LSA_Identification_and_Attributes_List concatenation.");
if (val_ptr->n_elements == 0) return other_value;
if (other_value.val_ptr->n_elements == 0) return *this;
LSA__Identification__and__Attributes__List ret_val;
ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements);
for (int i=0; i<val_ptr->n_elements; i++) {
if (val_ptr->value_elements[i] != NULL) {
ret_val.val_ptr->value_elements[i] = new LSA__Identification__and__Attributes(*val_ptr->value_elements[i]);
}
}
for (int i=0; i<other_value.val_ptr->n_elements; i++) {
if (other_value.val_ptr->value_elements[i] != NULL) {
ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new LSA__Identification__and__Attributes(*other_value.val_ptr->value_elements[i]);
}
}
return ret_val;
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List::substr(int index, int returncount) const
{
if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
check_substr_arguments(val_ptr->n_elements, index, returncount, "@BSSGP_Types.LSA_Identification_and_Attributes_List","element");
LSA__Identification__and__Attributes__List ret_val;
ret_val.set_size(returncount);
for (int i=0; i<returncount; i++) {
if (val_ptr->value_elements[i+index] != NULL) {
ret_val.val_ptr->value_elements[i] = new LSA__Identification__and__Attributes(*val_ptr->value_elements[i+index]);
}
}
return ret_val;
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List::replace(int index, int len, const LSA__Identification__and__Attributes__List& repl) const
{
if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
check_replace_arguments(val_ptr->n_elements, index, len, "@BSSGP_Types.LSA_Identification_and_Attributes_List","element");
LSA__Identification__and__Attributes__List ret_val;
ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len);
for (int i = 0; i < index; i++) {
if (val_ptr->value_elements[i] != NULL) {
ret_val.val_ptr->value_elements[i] = new LSA__Identification__and__Attributes(*val_ptr->value_elements[i]);
}
}
for (int i = 0; i < repl.val_ptr->n_elements; i++) {
if (repl.val_ptr->value_elements[i] != NULL) {
ret_val.val_ptr->value_elements[i+index] = new LSA__Identification__and__Attributes(*repl.val_ptr->value_elements[i]);
}
}
for (int i = 0; i < val_ptr->n_elements - index - len; i++) {
if (val_ptr->value_elements[index+i+len] != NULL) {
ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new LSA__Identification__and__Attributes(*val_ptr->value_elements[index+i+len]);
}
}
return ret_val;
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List::replace(int index, int len, const LSA__Identification__and__Attributes__List_template& repl) const
{
if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value.");
return replace(index, len, repl.valueof());
}

void LSA__Identification__and__Attributes__List::set_size(int new_size)
{
if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
if (val_ptr == NULL) {
val_ptr = new recordof_setof_struct;
val_ptr->ref_count = 1;
val_ptr->n_elements = 0;
val_ptr->value_elements = NULL;
} else if (val_ptr->ref_count > 1) {
struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct;
new_val_ptr->ref_count = 1;
new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements;
new_val_ptr->value_elements = (LSA__Identification__and__Attributes**)allocate_pointers(new_val_ptr->n_elements);
for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) {
if (val_ptr->value_elements[elem_count] != NULL){
new_val_ptr->value_elements[elem_count] = new LSA__Identification__and__Attributes(*(val_ptr->value_elements[elem_count]));
}
}
clean_up();
val_ptr = new_val_ptr;
}
if (new_size > val_ptr->n_elements) {
val_ptr->value_elements = (LSA__Identification__and__Attributes**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
#ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF
if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @BSSGP_Types.LSA_Identification_and_Attributes_List: %d",new_size);
#endif
val_ptr->n_elements = new_size;
} else if (new_size < val_ptr->n_elements) {
for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++)
if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count];
val_ptr->value_elements = (LSA__Identification__and__Attributes**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
val_ptr->n_elements = new_size;
}
}

boolean LSA__Identification__and__Attributes__List::is_value() const
{
if (val_ptr == NULL) return FALSE;
for(int i = 0; i < val_ptr->n_elements; ++i) {
if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE;
}
return TRUE;
}

int LSA__Identification__and__Attributes__List::size_of() const
{
if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
return val_ptr->n_elements;
}

int LSA__Identification__and__Attributes__List::lengthof() const
{
if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length;
return 0;
}

void LSA__Identification__and__Attributes__List::log() const
{
if (val_ptr == NULL) {;
TTCN_Logger::log_event_unbound();
return;
}
switch (val_ptr->n_elements) {
case 0:
TTCN_Logger::log_event_str("{ }");
break;
default:
TTCN_Logger::log_event_str("{ ");
for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) {
if (elem_count > 0) TTCN_Logger::log_event_str(", ");
(*this)[elem_count].log();
}
TTCN_Logger::log_event_str(" }");
}
}

void LSA__Identification__and__Attributes__List::set_implicit_omit()
{
if (val_ptr == NULL) return;
for (int i = 0; i < val_ptr->n_elements; i++) {
if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit();
}
}

void LSA__Identification__and__Attributes__List::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value");
  switch (param.get_operation_type()) {
  case Module_Param::OT_ASSIGN:
    if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) {
      *this = NULL_VALUE;
      return;
    }
    switch (param.get_type()) {
    case Module_Param::MP_Value_List:
      set_size(param.get_size());
      for (size_t i=0; i<param.get_size(); ++i) {
        Module_Param* const curr = param.get_elem(i);
        if (curr->get_type()!=Module_Param::MP_NotUsed) {
          (*this)[i].set_param(*curr);
          if (!(*this)[i].is_bound()) {
            delete val_ptr->value_elements[i];
            val_ptr->value_elements[i] = NULL;
          }
        }
      }
      break;
    case Module_Param::MP_Indexed_List:
      for (size_t i=0; i<param.get_size(); ++i) {
        Module_Param* const curr = param.get_elem(i);
        (*this)[curr->get_id()->get_index()].set_param(*curr);
        if (!(*this)[curr->get_id()->get_index()].is_bound()) {
          delete val_ptr->value_elements[curr->get_id()->get_index()];
          val_ptr->value_elements[curr->get_id()->get_index()] = NULL;
        }
      }
      break;
    default:
      param.type_error("record of value", "@BSSGP_Types.LSA_Identification_and_Attributes_List");
    }
    break;
  case Module_Param::OT_CONCAT:
    switch (param.get_type()) {
    case Module_Param::MP_Value_List: {
      if (!is_bound()) *this = NULL_VALUE;
      int start_idx = lengthof();
      for (size_t i=0; i<param.get_size(); ++i) {
        Module_Param* const curr = param.get_elem(i);
        if ((curr->get_type()!=Module_Param::MP_NotUsed)) {
          (*this)[start_idx+(int)i].set_param(*curr);
        }
      }
    } break;
    case Module_Param::MP_Indexed_List:
      param.error("Cannot concatenate an indexed value list");
      break;
    default:
      param.type_error("record of value", "@BSSGP_Types.LSA_Identification_and_Attributes_List");
    }
    break;
  default:
    TTCN_error("Internal error: Unknown operation type.");
  }
}

void LSA__Identification__and__Attributes__List::encode_text(Text_Buf& text_buf) const
{
if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
text_buf.push_int(val_ptr->n_elements);
for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++)
(*this)[elem_count].encode_text(text_buf);
}

void LSA__Identification__and__Attributes__List::decode_text(Text_Buf& text_buf)
{
clean_up();
val_ptr = new recordof_setof_struct;
val_ptr->ref_count = 1;
val_ptr->n_elements = text_buf.pull_int().get_val();
if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
val_ptr->value_elements = (LSA__Identification__and__Attributes**)allocate_pointers(val_ptr->n_elements);
for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) {
val_ptr->value_elements[elem_count] = new LSA__Identification__and__Attributes;
val_ptr->value_elements[elem_count]->decode_text(text_buf);
}
}

void LSA__Identification__and__Attributes__List::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void LSA__Identification__and__Attributes__List::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int LSA__Identification__and__Attributes__List::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean /*no_err*/, int sel_field, boolean first_call, const RAW_Force_Omit*){
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  int decoded_length=0;
  int decoded_field_length=0;
  size_t start_of_field=0;
  if(first_call) {
    clean_up();
    val_ptr=new recordof_setof_struct;
    val_ptr->ref_count=1;
    val_ptr->n_elements=0;
    val_ptr->value_elements=NULL;
  }
  int start_field=val_ptr->n_elements;
  if(p_td.raw->fieldlength || sel_field!=-1){
    int a=0;
    if(sel_field==-1) sel_field=p_td.raw->fieldlength;
    start_of_field=p_buf.get_pos_bit();
    for(a=0;a<sel_field;a++){
      decoded_field_length=(*this)[a+start_field].RAW_decode(*p_td.oftype_descr,p_buf,limit,top_bit_ord,TRUE);
      if(decoded_field_length < 0){
        while(a>=0){
          delete &(*this)[a+start_field];
          a--;
          val_ptr->n_elements--;
        }
        p_buf.set_pos_bit(start_of_field);
        return decoded_field_length;
      }
      decoded_length+=decoded_field_length;
      limit-=decoded_field_length;
    }
    if(a==0) val_ptr->n_elements=0;
  } else {
    if(limit==0){
      if(!first_call) return -1;
      val_ptr->n_elements=0;
      return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength;
    }
    int a=start_field;
    while(limit>0){
      start_of_field=p_buf.get_pos_bit();
      decoded_field_length=(*this)[a].RAW_decode(*p_td.oftype_descr,p_buf,limit,top_bit_ord,TRUE);
      if(decoded_field_length < 0){
        delete &(*this)[a];
        val_ptr->n_elements--;
        p_buf.set_pos_bit(start_of_field);
        if(a>start_field){
        return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength;
        } else return -1;
      }
      decoded_length+=decoded_field_length;
      limit-=decoded_field_length;
      a++;
    }
  }
 return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength;
}

int LSA__Identification__and__Attributes__List::RAW_encode(const TTCN_Typedescriptor_t& p_td,RAW_enc_tree& myleaf) const{
  int encoded_length=0;
  int encoded_num_of_records=p_td.raw->fieldlength?smaller(val_ptr->n_elements, p_td.raw->fieldlength):val_ptr->n_elements;
  myleaf.isleaf=FALSE;
  myleaf.rec_of=TRUE;
  myleaf.body.node.num_of_nodes=encoded_num_of_records;
  myleaf.body.node.nodes=init_nodes_of_enc_tree(encoded_num_of_records);
  for(int a=0;a<encoded_num_of_records;a++){
    myleaf.body.node.nodes[a]=new RAW_enc_tree(TRUE,&myleaf,&(myleaf.curr_pos),a,p_td.oftype_descr->raw);
    encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]);
  }
 return myleaf.length=encoded_length;
}

void LSA__Identification__and__Attributes__List_template::copy_value(const LSA__Identification__and__Attributes__List& other_value)
{
if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List with an unbound value.");
single_value.n_elements = other_value.size_of();
single_value.value_elements = (LSA__Identification__and__Attributes_template**)allocate_pointers(single_value.n_elements);
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) {
if (other_value[elem_count].is_bound()) {
single_value.value_elements[elem_count] = new LSA__Identification__and__Attributes_template(other_value[elem_count]);
} else {
single_value.value_elements[elem_count] = new LSA__Identification__and__Attributes_template;
}
}
set_selection(SPECIFIC_VALUE);
}

void LSA__Identification__and__Attributes__List_template::copy_template(const LSA__Identification__and__Attributes__List_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value.n_elements = other_value.single_value.n_elements;
single_value.value_elements = (LSA__Identification__and__Attributes_template**)allocate_pointers(single_value.n_elements);
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) {
if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) {
single_value.value_elements[elem_count] = new LSA__Identification__and__Attributes_template(*other_value.single_value.value_elements[elem_count]);
} else {
single_value.value_elements[elem_count] = new LSA__Identification__and__Attributes_template;
}
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new LSA__Identification__and__Attributes__List_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new LSA__Identification__and__Attributes__List_template(*other_value.implication_.precondition);
implication_.implied_template = new LSA__Identification__and__Attributes__List_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
break;
}
set_selection(other_value);
}

boolean LSA__Identification__and__Attributes__List_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy)
{
if (value_index >= 0) return ((const LSA__Identification__and__Attributes__List_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const LSA__Identification__and__Attributes__List*)value_ptr)[value_index], legacy);
else return ((const LSA__Identification__and__Attributes__List_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
}

LSA__Identification__and__Attributes__List_template::LSA__Identification__and__Attributes__List_template()
{
}

LSA__Identification__and__Attributes__List_template::LSA__Identification__and__Attributes__List_template(template_sel other_value)
 : Base_Record_Of_Template(other_value)
{
check_single_selection(other_value);
}

LSA__Identification__and__Attributes__List_template::LSA__Identification__and__Attributes__List_template(null_type)
 : Base_Record_Of_Template(SPECIFIC_VALUE)
{
single_value.n_elements = 0;
single_value.value_elements = NULL;
}

LSA__Identification__and__Attributes__List_template::LSA__Identification__and__Attributes__List_template(const LSA__Identification__and__Attributes__List& other_value)
{
copy_value(other_value);
}

LSA__Identification__and__Attributes__List_template::LSA__Identification__and__Attributes__List_template(const OPTIONAL<LSA__Identification__and__Attributes__List>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LSA__Identification__and__Attributes__List&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List from an unbound optional field.");
}
}

LSA__Identification__and__Attributes__List_template::LSA__Identification__and__Attributes__List_template(LSA__Identification__and__Attributes__List_template* p_precondition, LSA__Identification__and__Attributes__List_template* p_implied_template)
 : Base_Record_Of_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

LSA__Identification__and__Attributes__List_template::LSA__Identification__and__Attributes__List_template(Dynamic_Match_Interface<LSA__Identification__and__Attributes__List>* p_dyn_match)
 : Base_Record_Of_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<LSA__Identification__and__Attributes__List>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

LSA__Identification__and__Attributes__List_template::LSA__Identification__and__Attributes__List_template(const LSA__Identification__and__Attributes__List_template& other_value)
 : Base_Record_Of_Template()
{
copy_template(other_value);
}

LSA__Identification__and__Attributes__List_template::~LSA__Identification__and__Attributes__List_template()
{
clean_up();
}

void LSA__Identification__and__Attributes__List_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++)
delete single_value.value_elements[elem_count];
free_pointers((void**)single_value.value_elements);
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

LSA__Identification__and__Attributes__List_template& LSA__Identification__and__Attributes__List_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

LSA__Identification__and__Attributes__List_template& LSA__Identification__and__Attributes__List_template::operator=(null_type)
{
clean_up();
set_selection(SPECIFIC_VALUE);
single_value.n_elements = 0;
single_value.value_elements = NULL;
return *this;
}

LSA__Identification__and__Attributes__List_template& LSA__Identification__and__Attributes__List_template::operator=(const LSA__Identification__and__Attributes__List& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

LSA__Identification__and__Attributes__List_template& LSA__Identification__and__Attributes__List_template::operator=(const OPTIONAL<LSA__Identification__and__Attributes__List>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LSA__Identification__and__Attributes__List&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
}
return *this;
}

LSA__Identification__and__Attributes__List_template& LSA__Identification__and__Attributes__List_template::operator=(const LSA__Identification__and__Attributes__List_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

LSA__Identification__and__Attributes_template& LSA__Identification__and__Attributes__List_template::operator[](int index_value)
{
if (index_value < 0) TTCN_error("Accessing an element of a template for type @BSSGP_Types.LSA_Identification_and_Attributes_List using a negative index: %d.", index_value);
switch (template_selection)
{
  case SPECIFIC_VALUE:
    if(index_value < single_value.n_elements) break;
    // no break
  case OMIT_VALUE:
  case ANY_VALUE:
  case ANY_OR_OMIT:
  case UNINITIALIZED_TEMPLATE:
    set_size(index_value + 1);
    break;
  default:
    TTCN_error("Accessing an element of a non-specific template for type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
    break;
}
return *single_value.value_elements[index_value];
}

LSA__Identification__and__Attributes_template& LSA__Identification__and__Attributes__List_template::operator[](const INTEGER& index_value)
{
index_value.must_bound("Using an unbound integer value for indexing a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
return (*this)[(int)index_value];
}

const LSA__Identification__and__Attributes_template& LSA__Identification__and__Attributes__List_template::operator[](int index_value) const
{
if (index_value < 0) TTCN_error("Accessing an element of a template for type @BSSGP_Types.LSA_Identification_and_Attributes_List using a negative index: %d.", index_value);
if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements);
return *single_value.value_elements[index_value];
}

const LSA__Identification__and__Attributes_template& LSA__Identification__and__Attributes__List_template::operator[](const INTEGER& index_value) const
{
index_value.must_bound("Using an unbound integer value for indexing a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
return (*this)[(int)index_value];
}

void LSA__Identification__and__Attributes__List_template::set_size(int new_size)
{
if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
template_sel old_selection = template_selection;
if (old_selection != SPECIFIC_VALUE) {
clean_up();
set_selection(SPECIFIC_VALUE);
single_value.n_elements = 0;
single_value.value_elements = NULL;
}
if (new_size > single_value.n_elements) {
single_value.value_elements = (LSA__Identification__and__Attributes_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++)
single_value.value_elements[elem_count] = new LSA__Identification__and__Attributes_template(ANY_VALUE);
} else {
for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++)
single_value.value_elements[elem_count] = new LSA__Identification__and__Attributes_template;
}
single_value.n_elements = new_size;
} else if (new_size < single_value.n_elements) {
for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++)
delete single_value.value_elements[elem_count];
single_value.value_elements = (LSA__Identification__and__Attributes_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
single_value.n_elements = new_size;
}
}

int LSA__Identification__and__Attributes__List_template::n_elem() const
{
  switch (template_selection) {
  case SPECIFIC_VALUE:
    return single_value.n_elements;
    break;
  case VALUE_LIST:
    return value_list.n_values;
    break;
  default:
    TTCN_error("Performing n_elem");
  }
}

int LSA__Identification__and__Attributes__List_template::size_of(boolean is_size) const
{
const char* op_name = is_size ? "size" : "length";
int min_size;
boolean has_any_or_none;
if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List which has an ifpresent attribute.", op_name);
switch (template_selection)
{
case SPECIFIC_VALUE: {
  min_size = 0;
  has_any_or_none = FALSE;
  int elem_count = single_value.n_elements;
  if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; }
  for (int i=0; i<elem_count; i++) {
    switch (single_value.value_elements[i]->get_selection()) {
    case OMIT_VALUE:
      TTCN_error("Performing %sof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List containing omit element.", op_name);
    case ANY_OR_OMIT:
      has_any_or_none = TRUE;
      break;
    default:
      min_size++;
      break;
    }
  }
} break;
case OMIT_VALUE:
  TTCN_error("Performing %sof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List containing omit value.", op_name);
case ANY_VALUE:
case ANY_OR_OMIT:
  min_size = 0;
  has_any_or_none = TRUE;
  break;
case VALUE_LIST:
{
  if (value_list.n_values<1)
    TTCN_error("Performing %sof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List containing an empty list.", op_name);
  int item_size = value_list.list_value[0].size_of(is_size);
  for (unsigned int i = 1; i < value_list.n_values; i++) {
    if (value_list.list_value[i].size_of(is_size)!=item_size)
      TTCN_error("Performing %sof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List containing a value list with different sizes.", op_name);
  }
  min_size = item_size;
  has_any_or_none = FALSE;
  break;
}
case COMPLEMENTED_LIST:
  TTCN_error("Performing %sof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List containing complemented list.", op_name);
default:
  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.", op_name);
}
return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @BSSGP_Types.LSA_Identification_and_Attributes_List");
}

boolean LSA__Identification__and__Attributes__List_template::match(const LSA__Identification__and__Attributes__List& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
int value_length = other_value.size_of();
if (!match_length(value_length)) return FALSE;
switch (template_selection) {
case SPECIFIC_VALUE:
return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy);
case OMIT_VALUE:
return FALSE;
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching with an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
}
return FALSE;
}

boolean LSA__Identification__and__Attributes__List_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++)
if (!single_value.value_elements[elem_count]->is_value()) return FALSE;
return TRUE;
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
LSA__Identification__and__Attributes__List ret_val;
ret_val.set_size(single_value.n_elements);
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++)
if (single_value.value_elements[elem_count]->is_bound()) {
ret_val[elem_count] = single_value.value_elements[elem_count]->valueof();
}
return ret_val;
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List_template::substr(int index, int returncount) const
{
if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value.");
return valueof().substr(index, returncount);
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List_template::replace(int index, int len, const LSA__Identification__and__Attributes__List_template& repl) const
{
if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value.");
if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value.");
return valueof().replace(index, len, repl.valueof());
}

LSA__Identification__and__Attributes__List LSA__Identification__and__Attributes__List_template::replace(int index, int len, const LSA__Identification__and__Attributes__List& repl) const
{
if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value.");
return valueof().replace(index, len, repl);
}

void LSA__Identification__and__Attributes__List_template::set_type(template_sel template_type, unsigned int list_length)
{
clean_up();
switch (template_type) {
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = list_length;
value_list.list_value = new LSA__Identification__and__Attributes__List_template[list_length];
break;
default:
TTCN_error("Internal error: Setting an invalid type for a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
}
set_selection(template_type);
}

LSA__Identification__and__Attributes__List_template& LSA__Identification__and__Attributes__List_template::list_item(unsigned int list_index)
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
return value_list.list_value[list_index];
}

void LSA__Identification__and__Attributes__List_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
if (single_value.n_elements > 0) {
TTCN_Logger::log_event_str("{ ");
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) {
if (elem_count > 0) TTCN_Logger::log_event_str(", ");
if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation(");
single_value.value_elements[elem_count]->log();
if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')');
}
TTCN_Logger::log_event_str(" }");
} else TTCN_Logger::log_event_str("{ }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_restricted();
log_ifpresent();
}

void LSA__Identification__and__Attributes__List_template::log_match(const LSA__Identification__and__Attributes__List& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
}else{
if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) {
if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){
TTCN_Logger::log_logmatch_info("[%d]", elem_count);
single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
log_match_length(single_value.n_elements);
} else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) {
TTCN_Logger::log_event_str("{ ");
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) {
if (elem_count > 0) TTCN_Logger::log_event_str(", ");
single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy);
}
TTCN_Logger::log_event_str(" }");
log_match_length(single_value.n_elements);
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void LSA__Identification__and__Attributes__List_template::encode_text(Text_Buf& text_buf) const
{
encode_text_permutation(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
text_buf.push_int(single_value.n_elements);
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++)
single_value.value_elements[elem_count]->encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
}
}

void LSA__Identification__and__Attributes__List_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_permutation(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value.n_elements = text_buf.pull_int().get_val();
if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
single_value.value_elements = (LSA__Identification__and__Attributes_template**)allocate_pointers(single_value.n_elements);
for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) {
single_value.value_elements[elem_count] = new LSA__Identification__and__Attributes_template;
single_value.value_elements[elem_count]->decode_text(text_buf);
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new LSA__Identification__and__Attributes__List_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @BSSGP_Types.LSA_Identification_and_Attributes_List.");
}
}

boolean LSA__Identification__and__Attributes__List_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean LSA__Identification__and__Attributes__List_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int i=0; i<value_list.n_values; i++)
if (value_list.list_value[i].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

void LSA__Identification__and__Attributes__List_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
for (int i = 0; i < single_value.n_elements; i++) {
if (single_value.value_elements[i] != NULL) single_value.value_elements[i]->set_implicit_omit();
}
}

void LSA__Identification__and__Attributes__List_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    LSA__Identification__and__Attributes__List_template temp;
    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = temp;
    break; }
  case Module_Param::MP_Indexed_List:
    if (template_selection!=SPECIFIC_VALUE) set_size(0);
    for (size_t p_i=0; p_i<param.get_size(); ++p_i) {
      (*this)[(int)(param.get_elem(p_i)->get_id()->get_index())].set_param(*param.get_elem(p_i));
    }
    break;
  case Module_Param::MP_Value_List: {
    set_size(param.get_size());
    int curr_idx = 0;
    for (size_t p_i=0; p_i<param.get_size(); ++p_i) {
      switch (param.get_elem(p_i)->get_type()) {
      case Module_Param::MP_NotUsed:
        curr_idx++;
        break;
      case Module_Param::MP_Permutation_Template: {
        int perm_start_idx = curr_idx;
        Module_Param* param_i = param.get_elem(p_i);
        for (size_t perm_i=0; perm_i<param_i->get_size(); perm_i++) {
          (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i)));
          curr_idx++;
        }
        int perm_end_idx = curr_idx - 1;
        add_permutation(perm_start_idx, perm_end_idx);
      } break;
      default:
        (*this)[curr_idx].set_param(*param.get_elem(p_i));
        curr_idx++;
      }
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    LSA__Identification__and__Attributes__List_template* precondition = new LSA__Identification__and__Attributes__List_template;
    precondition->set_param(*param.get_elem(0));
    LSA__Identification__and__Attributes__List_template* implied_template = new LSA__Identification__and__Attributes__List_template;
    implied_template->set_param(*param.get_elem(1));
    *this = LSA__Identification__and__Attributes__List_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record of template", "@BSSGP_Types.LSA_Identification_and_Attributes_List");
  }
  is_ifpresent = param.get_ifpresent();
  set_length_range(param);
}

void LSA__Identification__and__Attributes__List_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
for (int i=0; i<single_value.n_elements; i++) single_value.value_elements[i]->check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Identification_and_Attributes_List");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.LSA_Identification_and_Attributes_List");
}

boolean LSA__Identification__and__Attributes__List_template::get_istemplate_kind(const char* type) const {
if (!strcmp(type, "AnyElement")) {
  if (template_selection != SPECIFIC_VALUE) {
    return FALSE;
  }
  for (int i = 0; i < single_value.n_elements; i++) {
    if (single_value.value_elements[i]->get_selection() == ANY_VALUE) {
      return TRUE;
    }
  }
  return FALSE;
} else if (!strcmp(type, "AnyElementsOrNone")) {
  if (template_selection != SPECIFIC_VALUE) {
    return FALSE;
  }
  for (int i = 0; i < single_value.n_elements; i++) {
    if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) {
      return TRUE;
    }
  }
  return FALSE;
} else if (!strcmp(type, "permutation")) {
  return number_of_permutations;
} else if (!strcmp(type, "length")) {
  return length_restriction_type != NO_LENGTH_RESTRICTION;
} else {
  return Base_Template::get_istemplate_kind(type);
}
}
LSA__Identification__and__Attributes::LSA__Identification__and__Attributes()
{
}

LSA__Identification__and__Attributes::LSA__Identification__and__Attributes(const BITSTRING& par_priority,
    const BITSTRING& par_pref,
    const BITSTRING& par_act,
    const BITSTRING& par_spare,
    const OCTETSTRING& par_lSA__ID)
  :   field_priority(par_priority),
  field_pref(par_pref),
  field_act(par_act),
  field_spare(par_spare),
  field_lSA__ID(par_lSA__ID)
{
}

LSA__Identification__and__Attributes::LSA__Identification__and__Attributes(const LSA__Identification__and__Attributes& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes.");
if (other_value.priority().is_bound()) field_priority = other_value.priority();
else field_priority.clean_up();
if (other_value.pref().is_bound()) field_pref = other_value.pref();
else field_pref.clean_up();
if (other_value.act().is_bound()) field_act = other_value.act();
else field_act.clean_up();
if (other_value.spare().is_bound()) field_spare = other_value.spare();
else field_spare.clean_up();
if (other_value.lSA__ID().is_bound()) field_lSA__ID = other_value.lSA__ID();
else field_lSA__ID.clean_up();
}

void LSA__Identification__and__Attributes::clean_up()
{
field_priority.clean_up();
field_pref.clean_up();
field_act.clean_up();
field_spare.clean_up();
field_lSA__ID.clean_up();
}

const TTCN_Typedescriptor_t* LSA__Identification__and__Attributes::get_descriptor() const { return &LSA__Identification__and__Attributes_descr_; }
LSA__Identification__and__Attributes& LSA__Identification__and__Attributes::operator=(const LSA__Identification__and__Attributes& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.LSA_Identification_and_Attributes.");
  if (other_value.priority().is_bound()) field_priority = other_value.priority();
  else field_priority.clean_up();
  if (other_value.pref().is_bound()) field_pref = other_value.pref();
  else field_pref.clean_up();
  if (other_value.act().is_bound()) field_act = other_value.act();
  else field_act.clean_up();
  if (other_value.spare().is_bound()) field_spare = other_value.spare();
  else field_spare.clean_up();
  if (other_value.lSA__ID().is_bound()) field_lSA__ID = other_value.lSA__ID();
  else field_lSA__ID.clean_up();
}
return *this;
}

boolean LSA__Identification__and__Attributes::operator==(const LSA__Identification__and__Attributes& other_value) const
{
return field_priority==other_value.field_priority
  && field_pref==other_value.field_pref
  && field_act==other_value.field_act
  && field_spare==other_value.field_spare
  && field_lSA__ID==other_value.field_lSA__ID;
}

boolean LSA__Identification__and__Attributes::is_bound() const
{
return (field_priority.is_bound())
  || (field_pref.is_bound())
  || (field_act.is_bound())
  || (field_spare.is_bound())
  || (field_lSA__ID.is_bound());
}
boolean LSA__Identification__and__Attributes::is_value() const
{
return field_priority.is_value()
  && field_pref.is_value()
  && field_act.is_value()
  && field_spare.is_value()
  && field_lSA__ID.is_value();
}
void LSA__Identification__and__Attributes::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ priority := ");
field_priority.log();
TTCN_Logger::log_event_str(", pref := ");
field_pref.log();
TTCN_Logger::log_event_str(", act := ");
field_act.log();
TTCN_Logger::log_event_str(", spare := ");
field_spare.log();
TTCN_Logger::log_event_str(", lSA_ID := ");
field_lSA__ID.log();
TTCN_Logger::log_event_str(" }");
}

void LSA__Identification__and__Attributes::set_implicit_omit()
{
if (priority().is_bound()) priority().set_implicit_omit();
if (pref().is_bound()) pref().set_implicit_omit();
if (act().is_bound()) act().set_implicit_omit();
if (spare().is_bound()) spare().set_implicit_omit();
if (lSA__ID().is_bound()) lSA__ID().set_implicit_omit();
}

void LSA__Identification__and__Attributes::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (5<param.get_size()) {
      param.error("record value of type @BSSGP_Types.LSA_Identification_and_Attributes has 5 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) priority().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pref().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) act().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) lSA__ID().set_param(*param.get_elem(4));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "priority")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          priority().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pref")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pref().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "act")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          act().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "spare")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          spare().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lSA_ID")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lSA__ID().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LSA_Identification_and_Attributes: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.LSA_Identification_and_Attributes");
  }
}

void LSA__Identification__and__Attributes::encode_text(Text_Buf& text_buf) const
{
field_priority.encode_text(text_buf);
field_pref.encode_text(text_buf);
field_act.encode_text(text_buf);
field_spare.encode_text(text_buf);
field_lSA__ID.encode_text(text_buf);
}

void LSA__Identification__and__Attributes::decode_text(Text_Buf& text_buf)
{
field_priority.decode_text(text_buf);
field_pref.decode_text(text_buf);
field_act.decode_text(text_buf);
field_spare.decode_text(text_buf);
field_lSA__ID.decode_text(text_buf);
}

void LSA__Identification__and__Attributes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void LSA__Identification__and__Attributes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int LSA__Identification__and__Attributes::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::BIT4_descr_.raw->forceomit);
  decoded_field_length = field_priority.RAW_decode(General__Types::BIT4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, General__Types::BIT1_descr_.raw->forceomit);
  decoded_field_length = field_pref.RAW_decode(General__Types::BIT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_2_force_omit(2, force_omit, General__Types::BIT1_descr_.raw->forceomit);
  decoded_field_length = field_act.RAW_decode(General__Types::BIT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::BIT2_descr_.raw->forceomit);
  decoded_field_length = field_spare.RAW_decode(General__Types::BIT2_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_4_force_omit(4, force_omit, General__Types::OCT3_descr_.raw->forceomit);
  decoded_field_length = field_lSA__ID.RAW_decode(General__Types::OCT3_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_4_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int LSA__Identification__and__Attributes::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 5;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(5);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::BIT4_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT1_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT1_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::BIT2_descr_.raw);
  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::OCT3_descr_.raw);
  encoded_length += field_priority.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_pref.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_act.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_spare.RAW_encode(General__Types::BIT2_descr_, *myleaf.body.node.nodes[3]);
  encoded_length += field_lSA__ID.RAW_encode(General__Types::OCT3_descr_, *myleaf.body.node.nodes[4]);
  return myleaf.length = encoded_length;
}

struct LSA__Identification__and__Attributes_template::single_value_struct {
BITSTRING_template field_priority;
BITSTRING_template field_pref;
BITSTRING_template field_act;
BITSTRING_template field_spare;
OCTETSTRING_template field_lSA__ID;
};

void LSA__Identification__and__Attributes_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_priority = ANY_VALUE;
single_value->field_pref = ANY_VALUE;
single_value->field_act = ANY_VALUE;
single_value->field_spare = ANY_VALUE;
single_value->field_lSA__ID = ANY_VALUE;
}
}
}

void LSA__Identification__and__Attributes_template::copy_value(const LSA__Identification__and__Attributes& other_value)
{
single_value = new single_value_struct;
if (other_value.priority().is_bound()) {
  single_value->field_priority = other_value.priority();
} else {
  single_value->field_priority.clean_up();
}
if (other_value.pref().is_bound()) {
  single_value->field_pref = other_value.pref();
} else {
  single_value->field_pref.clean_up();
}
if (other_value.act().is_bound()) {
  single_value->field_act = other_value.act();
} else {
  single_value->field_act.clean_up();
}
if (other_value.spare().is_bound()) {
  single_value->field_spare = other_value.spare();
} else {
  single_value->field_spare.clean_up();
}
if (other_value.lSA__ID().is_bound()) {
  single_value->field_lSA__ID = other_value.lSA__ID();
} else {
  single_value->field_lSA__ID.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void LSA__Identification__and__Attributes_template::copy_template(const LSA__Identification__and__Attributes_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.priority().get_selection()) {
single_value->field_priority = other_value.priority();
} else {
single_value->field_priority.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.pref().get_selection()) {
single_value->field_pref = other_value.pref();
} else {
single_value->field_pref.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.act().get_selection()) {
single_value->field_act = other_value.act();
} else {
single_value->field_act.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.spare().get_selection()) {
single_value->field_spare = other_value.spare();
} else {
single_value->field_spare.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lSA__ID().get_selection()) {
single_value->field_lSA__ID = other_value.lSA__ID();
} else {
single_value->field_lSA__ID.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new LSA__Identification__and__Attributes_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new LSA__Identification__and__Attributes_template(*other_value.implication_.precondition);
implication_.implied_template = new LSA__Identification__and__Attributes_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
break;
}
set_selection(other_value);
}

LSA__Identification__and__Attributes_template::LSA__Identification__and__Attributes_template()
{
}

LSA__Identification__and__Attributes_template::LSA__Identification__and__Attributes_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

LSA__Identification__and__Attributes_template::LSA__Identification__and__Attributes_template(const LSA__Identification__and__Attributes& other_value)
{
copy_value(other_value);
}

LSA__Identification__and__Attributes_template::LSA__Identification__and__Attributes_template(const OPTIONAL<LSA__Identification__and__Attributes>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LSA__Identification__and__Attributes&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.LSA_Identification_and_Attributes from an unbound optional field.");
}
}

LSA__Identification__and__Attributes_template::LSA__Identification__and__Attributes_template(LSA__Identification__and__Attributes_template* p_precondition, LSA__Identification__and__Attributes_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

LSA__Identification__and__Attributes_template::LSA__Identification__and__Attributes_template(Dynamic_Match_Interface<LSA__Identification__and__Attributes>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<LSA__Identification__and__Attributes>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

LSA__Identification__and__Attributes_template::LSA__Identification__and__Attributes_template(const LSA__Identification__and__Attributes_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

LSA__Identification__and__Attributes_template::~LSA__Identification__and__Attributes_template()
{
clean_up();
}

LSA__Identification__and__Attributes_template& LSA__Identification__and__Attributes_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

LSA__Identification__and__Attributes_template& LSA__Identification__and__Attributes_template::operator=(const LSA__Identification__and__Attributes& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

LSA__Identification__and__Attributes_template& LSA__Identification__and__Attributes_template::operator=(const OPTIONAL<LSA__Identification__and__Attributes>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LSA__Identification__and__Attributes&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
}
return *this;
}

LSA__Identification__and__Attributes_template& LSA__Identification__and__Attributes_template::operator=(const LSA__Identification__and__Attributes_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean LSA__Identification__and__Attributes_template::match(const LSA__Identification__and__Attributes& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.priority().is_bound()) return FALSE;
if(!single_value->field_priority.match(other_value.priority(), legacy))return FALSE;
if(!other_value.pref().is_bound()) return FALSE;
if(!single_value->field_pref.match(other_value.pref(), legacy))return FALSE;
if(!other_value.act().is_bound()) return FALSE;
if(!single_value->field_act.match(other_value.act(), legacy))return FALSE;
if(!other_value.spare().is_bound()) return FALSE;
if(!single_value->field_spare.match(other_value.spare(), legacy))return FALSE;
if(!other_value.lSA__ID().is_bound()) return FALSE;
if(!single_value->field_lSA__ID.match(other_value.lSA__ID(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
}
return FALSE;
}

boolean LSA__Identification__and__Attributes_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_priority.is_bound()
 || single_value->field_pref.is_bound()
 || single_value->field_act.is_bound()
 || single_value->field_spare.is_bound()
 || single_value->field_lSA__ID.is_bound();
}

boolean LSA__Identification__and__Attributes_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_priority.is_value()
 && single_value->field_pref.is_value()
 && single_value->field_act.is_value()
 && single_value->field_spare.is_value()
 && single_value->field_lSA__ID.is_value();
}

void LSA__Identification__and__Attributes_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

LSA__Identification__and__Attributes LSA__Identification__and__Attributes_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
LSA__Identification__and__Attributes ret_val;
if (single_value->field_priority.is_bound()) {
ret_val.priority() = single_value->field_priority.valueof();
}
if (single_value->field_pref.is_bound()) {
ret_val.pref() = single_value->field_pref.valueof();
}
if (single_value->field_act.is_bound()) {
ret_val.act() = single_value->field_act.valueof();
}
if (single_value->field_spare.is_bound()) {
ret_val.spare() = single_value->field_spare.valueof();
}
if (single_value->field_lSA__ID.is_bound()) {
ret_val.lSA__ID() = single_value->field_lSA__ID.valueof();
}
return ret_val;
}

void LSA__Identification__and__Attributes_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new LSA__Identification__and__Attributes_template[list_length];
}

LSA__Identification__and__Attributes_template& LSA__Identification__and__Attributes_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
return value_list.list_value[list_index];
}

BITSTRING_template& LSA__Identification__and__Attributes_template::priority()
{
set_specific();
return single_value->field_priority;
}

const BITSTRING_template& LSA__Identification__and__Attributes_template::priority() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field priority of a non-specific template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
return single_value->field_priority;
}

BITSTRING_template& LSA__Identification__and__Attributes_template::pref()
{
set_specific();
return single_value->field_pref;
}

const BITSTRING_template& LSA__Identification__and__Attributes_template::pref() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field pref of a non-specific template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
return single_value->field_pref;
}

BITSTRING_template& LSA__Identification__and__Attributes_template::act()
{
set_specific();
return single_value->field_act;
}

const BITSTRING_template& LSA__Identification__and__Attributes_template::act() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field act of a non-specific template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
return single_value->field_act;
}

BITSTRING_template& LSA__Identification__and__Attributes_template::spare()
{
set_specific();
return single_value->field_spare;
}

const BITSTRING_template& LSA__Identification__and__Attributes_template::spare() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field spare of a non-specific template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
return single_value->field_spare;
}

OCTETSTRING_template& LSA__Identification__and__Attributes_template::lSA__ID()
{
set_specific();
return single_value->field_lSA__ID;
}

const OCTETSTRING_template& LSA__Identification__and__Attributes_template::lSA__ID() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lSA_ID of a non-specific template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
return single_value->field_lSA__ID;
}

int LSA__Identification__and__Attributes_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 5;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Identification_and_Attributes containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
  }
  return 0;
}

void LSA__Identification__and__Attributes_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ priority := ");
single_value->field_priority.log();
TTCN_Logger::log_event_str(", pref := ");
single_value->field_pref.log();
TTCN_Logger::log_event_str(", act := ");
single_value->field_act.log();
TTCN_Logger::log_event_str(", spare := ");
single_value->field_spare.log();
TTCN_Logger::log_event_str(", lSA_ID := ");
single_value->field_lSA__ID.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void LSA__Identification__and__Attributes_template::log_match(const LSA__Identification__and__Attributes& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_priority.match(match_value.priority(), legacy)){
TTCN_Logger::log_logmatch_info(".priority");
single_value->field_priority.log_match(match_value.priority(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_pref.match(match_value.pref(), legacy)){
TTCN_Logger::log_logmatch_info(".pref");
single_value->field_pref.log_match(match_value.pref(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_act.match(match_value.act(), legacy)){
TTCN_Logger::log_logmatch_info(".act");
single_value->field_act.log_match(match_value.act(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_spare.match(match_value.spare(), legacy)){
TTCN_Logger::log_logmatch_info(".spare");
single_value->field_spare.log_match(match_value.spare(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lSA__ID.match(match_value.lSA__ID(), legacy)){
TTCN_Logger::log_logmatch_info(".lSA_ID");
single_value->field_lSA__ID.log_match(match_value.lSA__ID(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ priority := ");
single_value->field_priority.log_match(match_value.priority(), legacy);
TTCN_Logger::log_event_str(", pref := ");
single_value->field_pref.log_match(match_value.pref(), legacy);
TTCN_Logger::log_event_str(", act := ");
single_value->field_act.log_match(match_value.act(), legacy);
TTCN_Logger::log_event_str(", spare := ");
single_value->field_spare.log_match(match_value.spare(), legacy);
TTCN_Logger::log_event_str(", lSA_ID := ");
single_value->field_lSA__ID.log_match(match_value.lSA__ID(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void LSA__Identification__and__Attributes_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (priority().is_bound()) priority().set_implicit_omit();
if (pref().is_bound()) pref().set_implicit_omit();
if (act().is_bound()) act().set_implicit_omit();
if (spare().is_bound()) spare().set_implicit_omit();
if (lSA__ID().is_bound()) lSA__ID().set_implicit_omit();
}

void LSA__Identification__and__Attributes_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_priority.encode_text(text_buf);
single_value->field_pref.encode_text(text_buf);
single_value->field_act.encode_text(text_buf);
single_value->field_spare.encode_text(text_buf);
single_value->field_lSA__ID.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
}
}

void LSA__Identification__and__Attributes_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_priority.decode_text(text_buf);
single_value->field_pref.decode_text(text_buf);
single_value->field_act.decode_text(text_buf);
single_value->field_spare.decode_text(text_buf);
single_value->field_lSA__ID.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new LSA__Identification__and__Attributes_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.LSA_Identification_and_Attributes.");
}
}

void LSA__Identification__and__Attributes_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    LSA__Identification__and__Attributes_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (5<param.get_size()) {
      param.error("record template of type @BSSGP_Types.LSA_Identification_and_Attributes has 5 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) priority().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pref().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) act().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(3));
    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) lSA__ID().set_param(*param.get_elem(4));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "priority")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          priority().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "pref")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          pref().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "act")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          act().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "spare")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          spare().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lSA_ID")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lSA__ID().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LSA_Identification_and_Attributes: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    LSA__Identification__and__Attributes_template* precondition = new LSA__Identification__and__Attributes_template;
    precondition->set_param(*param.get_elem(0));
    LSA__Identification__and__Attributes_template* implied_template = new LSA__Identification__and__Attributes_template;
    implied_template->set_param(*param.get_elem(1));
    *this = LSA__Identification__and__Attributes_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.LSA_Identification_and_Attributes");
  }
  is_ifpresent = param.get_ifpresent();
}

void LSA__Identification__and__Attributes_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_priority.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Identification_and_Attributes");
single_value->field_pref.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Identification_and_Attributes");
single_value->field_act.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Identification_and_Attributes");
single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Identification_and_Attributes");
single_value->field_lSA__ID.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Identification_and_Attributes");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.LSA_Identification_and_Attributes");
}

boolean LSA__Identification__and__Attributes_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean LSA__Identification__and__Attributes_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

LSA__Information::LSA__Information()
{
}

LSA__Information::LSA__Information(const BITSTRING& par_lSA__Only,
    const BITSTRING& par_spare,
    const LSA__Identification__and__Attributes__List& par_lSA__Identification__and__Attributes__List)
  :   field_lSA__Only(par_lSA__Only),
  field_spare(par_spare),
  field_lSA__Identification__and__Attributes__List(par_lSA__Identification__and__Attributes__List)
{
}

LSA__Information::LSA__Information(const LSA__Information& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.LSA_Information.");
if (other_value.lSA__Only().is_bound()) field_lSA__Only = other_value.lSA__Only();
else field_lSA__Only.clean_up();
if (other_value.spare().is_bound()) field_spare = other_value.spare();
else field_spare.clean_up();
if (other_value.lSA__Identification__and__Attributes__List().is_bound()) field_lSA__Identification__and__Attributes__List = other_value.lSA__Identification__and__Attributes__List();
else field_lSA__Identification__and__Attributes__List.clean_up();
}

void LSA__Information::clean_up()
{
field_lSA__Only.clean_up();
field_spare.clean_up();
field_lSA__Identification__and__Attributes__List.clean_up();
}

const TTCN_Typedescriptor_t* LSA__Information::get_descriptor() const { return &LSA__Information_descr_; }
LSA__Information& LSA__Information::operator=(const LSA__Information& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.LSA_Information.");
  if (other_value.lSA__Only().is_bound()) field_lSA__Only = other_value.lSA__Only();
  else field_lSA__Only.clean_up();
  if (other_value.spare().is_bound()) field_spare = other_value.spare();
  else field_spare.clean_up();
  if (other_value.lSA__Identification__and__Attributes__List().is_bound()) field_lSA__Identification__and__Attributes__List = other_value.lSA__Identification__and__Attributes__List();
  else field_lSA__Identification__and__Attributes__List.clean_up();
}
return *this;
}

boolean LSA__Information::operator==(const LSA__Information& other_value) const
{
return field_lSA__Only==other_value.field_lSA__Only
  && field_spare==other_value.field_spare
  && field_lSA__Identification__and__Attributes__List==other_value.field_lSA__Identification__and__Attributes__List;
}

boolean LSA__Information::is_bound() const
{
return (field_lSA__Only.is_bound())
  || (field_spare.is_bound())
  || (field_lSA__Identification__and__Attributes__List.is_bound());
}
boolean LSA__Information::is_value() const
{
return field_lSA__Only.is_value()
  && field_spare.is_value()
  && field_lSA__Identification__and__Attributes__List.is_value();
}
void LSA__Information::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ lSA_Only := ");
field_lSA__Only.log();
TTCN_Logger::log_event_str(", spare := ");
field_spare.log();
TTCN_Logger::log_event_str(", lSA_Identification_and_Attributes_List := ");
field_lSA__Identification__and__Attributes__List.log();
TTCN_Logger::log_event_str(" }");
}

void LSA__Information::set_implicit_omit()
{
if (lSA__Only().is_bound()) lSA__Only().set_implicit_omit();
if (spare().is_bound()) spare().set_implicit_omit();
if (lSA__Identification__and__Attributes__List().is_bound()) lSA__Identification__and__Attributes__List().set_implicit_omit();
}

void LSA__Information::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (3<param.get_size()) {
      param.error("record value of type @BSSGP_Types.LSA_Information has 3 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) lSA__Only().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lSA__Identification__and__Attributes__List().set_param(*param.get_elem(2));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lSA_Only")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lSA__Only().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "spare")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          spare().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lSA_Identification_and_Attributes_List")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lSA__Identification__and__Attributes__List().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LSA_Information: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.LSA_Information");
  }
}

void LSA__Information::encode_text(Text_Buf& text_buf) const
{
field_lSA__Only.encode_text(text_buf);
field_spare.encode_text(text_buf);
field_lSA__Identification__and__Attributes__List.encode_text(text_buf);
}

void LSA__Information::decode_text(Text_Buf& text_buf)
{
field_lSA__Only.decode_text(text_buf);
field_spare.decode_text(text_buf);
field_lSA__Identification__and__Attributes__List.decode_text(text_buf);
}

void LSA__Information::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void LSA__Information::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int LSA__Information::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::BIT1_descr_.raw->forceomit);
  decoded_field_length = field_lSA__Only.RAW_decode(General__Types::BIT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, General__Types::BIT7_descr_.raw->forceomit);
  decoded_field_length = field_spare.RAW_decode(General__Types::BIT7_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_2_force_omit(2, force_omit, LSA__Identification__and__Attributes__List_descr_.raw->forceomit);
  decoded_field_length = field_lSA__Identification__and__Attributes__List.RAW_decode(LSA__Identification__and__Attributes__List_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int LSA__Information::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 3;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(3);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::BIT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::BIT7_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, LSA__Identification__and__Attributes__List_descr_.raw);
  encoded_length += field_lSA__Only.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_spare.RAW_encode(General__Types::BIT7_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lSA__Identification__and__Attributes__List.RAW_encode(LSA__Identification__and__Attributes__List_descr_, *myleaf.body.node.nodes[2]);
  return myleaf.length = encoded_length;
}

struct LSA__Information_template::single_value_struct {
BITSTRING_template field_lSA__Only;
BITSTRING_template field_spare;
LSA__Identification__and__Attributes__List_template field_lSA__Identification__and__Attributes__List;
};

void LSA__Information_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_lSA__Only = ANY_VALUE;
single_value->field_spare = ANY_VALUE;
single_value->field_lSA__Identification__and__Attributes__List = ANY_VALUE;
}
}
}

void LSA__Information_template::copy_value(const LSA__Information& other_value)
{
single_value = new single_value_struct;
if (other_value.lSA__Only().is_bound()) {
  single_value->field_lSA__Only = other_value.lSA__Only();
} else {
  single_value->field_lSA__Only.clean_up();
}
if (other_value.spare().is_bound()) {
  single_value->field_spare = other_value.spare();
} else {
  single_value->field_spare.clean_up();
}
if (other_value.lSA__Identification__and__Attributes__List().is_bound()) {
  single_value->field_lSA__Identification__and__Attributes__List = other_value.lSA__Identification__and__Attributes__List();
} else {
  single_value->field_lSA__Identification__and__Attributes__List.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void LSA__Information_template::copy_template(const LSA__Information_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.lSA__Only().get_selection()) {
single_value->field_lSA__Only = other_value.lSA__Only();
} else {
single_value->field_lSA__Only.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.spare().get_selection()) {
single_value->field_spare = other_value.spare();
} else {
single_value->field_spare.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lSA__Identification__and__Attributes__List().get_selection()) {
single_value->field_lSA__Identification__and__Attributes__List = other_value.lSA__Identification__and__Attributes__List();
} else {
single_value->field_lSA__Identification__and__Attributes__List.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new LSA__Information_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new LSA__Information_template(*other_value.implication_.precondition);
implication_.implied_template = new LSA__Information_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.LSA_Information.");
break;
}
set_selection(other_value);
}

LSA__Information_template::LSA__Information_template()
{
}

LSA__Information_template::LSA__Information_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

LSA__Information_template::LSA__Information_template(const LSA__Information& other_value)
{
copy_value(other_value);
}

LSA__Information_template::LSA__Information_template(const OPTIONAL<LSA__Information>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LSA__Information&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.LSA_Information from an unbound optional field.");
}
}

LSA__Information_template::LSA__Information_template(LSA__Information_template* p_precondition, LSA__Information_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

LSA__Information_template::LSA__Information_template(Dynamic_Match_Interface<LSA__Information>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<LSA__Information>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

LSA__Information_template::LSA__Information_template(const LSA__Information_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

LSA__Information_template::~LSA__Information_template()
{
clean_up();
}

LSA__Information_template& LSA__Information_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

LSA__Information_template& LSA__Information_template::operator=(const LSA__Information& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

LSA__Information_template& LSA__Information_template::operator=(const OPTIONAL<LSA__Information>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LSA__Information&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.LSA_Information.");
}
return *this;
}

LSA__Information_template& LSA__Information_template::operator=(const LSA__Information_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean LSA__Information_template::match(const LSA__Information& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.lSA__Only().is_bound()) return FALSE;
if(!single_value->field_lSA__Only.match(other_value.lSA__Only(), legacy))return FALSE;
if(!other_value.spare().is_bound()) return FALSE;
if(!single_value->field_spare.match(other_value.spare(), legacy))return FALSE;
if(!other_value.lSA__Identification__and__Attributes__List().is_bound()) return FALSE;
if(!single_value->field_lSA__Identification__and__Attributes__List.match(other_value.lSA__Identification__and__Attributes__List(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.LSA_Information.");
}
return FALSE;
}

boolean LSA__Information_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_lSA__Only.is_bound()
 || single_value->field_spare.is_bound()
 || single_value->field_lSA__Identification__and__Attributes__List.is_bound();
}

boolean LSA__Information_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_lSA__Only.is_value()
 && single_value->field_spare.is_value()
 && single_value->field_lSA__Identification__and__Attributes__List.is_value();
}

void LSA__Information_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

LSA__Information LSA__Information_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.LSA_Information.");
LSA__Information ret_val;
if (single_value->field_lSA__Only.is_bound()) {
ret_val.lSA__Only() = single_value->field_lSA__Only.valueof();
}
if (single_value->field_spare.is_bound()) {
ret_val.spare() = single_value->field_spare.valueof();
}
if (single_value->field_lSA__Identification__and__Attributes__List.is_bound()) {
ret_val.lSA__Identification__and__Attributes__List() = single_value->field_lSA__Identification__and__Attributes__List.valueof();
}
return ret_val;
}

void LSA__Information_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.LSA_Information.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new LSA__Information_template[list_length];
}

LSA__Information_template& LSA__Information_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.LSA_Information.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.LSA_Information.");
return value_list.list_value[list_index];
}

BITSTRING_template& LSA__Information_template::lSA__Only()
{
set_specific();
return single_value->field_lSA__Only;
}

const BITSTRING_template& LSA__Information_template::lSA__Only() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lSA_Only of a non-specific template of type @BSSGP_Types.LSA_Information.");
return single_value->field_lSA__Only;
}

BITSTRING_template& LSA__Information_template::spare()
{
set_specific();
return single_value->field_spare;
}

const BITSTRING_template& LSA__Information_template::spare() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field spare of a non-specific template of type @BSSGP_Types.LSA_Information.");
return single_value->field_spare;
}

LSA__Identification__and__Attributes__List_template& LSA__Information_template::lSA__Identification__and__Attributes__List()
{
set_specific();
return single_value->field_lSA__Identification__and__Attributes__List;
}

const LSA__Identification__and__Attributes__List_template& LSA__Information_template::lSA__Identification__and__Attributes__List() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lSA_Identification_and_Attributes_List of a non-specific template of type @BSSGP_Types.LSA_Information.");
return single_value->field_lSA__Identification__and__Attributes__List;
}

int LSA__Information_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 3;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.LSA_Information.");
  }
  return 0;
}

void LSA__Information_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ lSA_Only := ");
single_value->field_lSA__Only.log();
TTCN_Logger::log_event_str(", spare := ");
single_value->field_spare.log();
TTCN_Logger::log_event_str(", lSA_Identification_and_Attributes_List := ");
single_value->field_lSA__Identification__and__Attributes__List.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void LSA__Information_template::log_match(const LSA__Information& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_lSA__Only.match(match_value.lSA__Only(), legacy)){
TTCN_Logger::log_logmatch_info(".lSA_Only");
single_value->field_lSA__Only.log_match(match_value.lSA__Only(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_spare.match(match_value.spare(), legacy)){
TTCN_Logger::log_logmatch_info(".spare");
single_value->field_spare.log_match(match_value.spare(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lSA__Identification__and__Attributes__List.match(match_value.lSA__Identification__and__Attributes__List(), legacy)){
TTCN_Logger::log_logmatch_info(".lSA_Identification_and_Attributes_List");
single_value->field_lSA__Identification__and__Attributes__List.log_match(match_value.lSA__Identification__and__Attributes__List(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ lSA_Only := ");
single_value->field_lSA__Only.log_match(match_value.lSA__Only(), legacy);
TTCN_Logger::log_event_str(", spare := ");
single_value->field_spare.log_match(match_value.spare(), legacy);
TTCN_Logger::log_event_str(", lSA_Identification_and_Attributes_List := ");
single_value->field_lSA__Identification__and__Attributes__List.log_match(match_value.lSA__Identification__and__Attributes__List(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void LSA__Information_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (lSA__Only().is_bound()) lSA__Only().set_implicit_omit();
if (spare().is_bound()) spare().set_implicit_omit();
if (lSA__Identification__and__Attributes__List().is_bound()) lSA__Identification__and__Attributes__List().set_implicit_omit();
}

void LSA__Information_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_lSA__Only.encode_text(text_buf);
single_value->field_spare.encode_text(text_buf);
single_value->field_lSA__Identification__and__Attributes__List.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.LSA_Information.");
}
}

void LSA__Information_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_lSA__Only.decode_text(text_buf);
single_value->field_spare.decode_text(text_buf);
single_value->field_lSA__Identification__and__Attributes__List.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new LSA__Information_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.LSA_Information.");
}
}

void LSA__Information_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    LSA__Information_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (3<param.get_size()) {
      param.error("record template of type @BSSGP_Types.LSA_Information has 3 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) lSA__Only().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) spare().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lSA__Identification__and__Attributes__List().set_param(*param.get_elem(2));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lSA_Only")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lSA__Only().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "spare")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          spare().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lSA_Identification_and_Attributes_List")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lSA__Identification__and__Attributes__List().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LSA_Information: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    LSA__Information_template* precondition = new LSA__Information_template;
    precondition->set_param(*param.get_elem(0));
    LSA__Information_template* implied_template = new LSA__Information_template;
    implied_template->set_param(*param.get_elem(1));
    *this = LSA__Information_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.LSA_Information");
  }
  is_ifpresent = param.get_ifpresent();
}

void LSA__Information_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_lSA__Only.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Information");
single_value->field_spare.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Information");
single_value->field_lSA__Identification__and__Attributes__List.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Information");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.LSA_Information");
}

boolean LSA__Information_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean LSA__Information_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

LSA__Information__BSSGP::LSA__Information__BSSGP()
{
}

LSA__Information__BSSGP::LSA__Information__BSSGP(const OCTETSTRING& par_iEI,
    const BITSTRING& par_ext,
    const LIN2__2a& par_lengthIndicator,
    const LSA__Information& par_lSA__Information)
  :   field_iEI(par_iEI),
  field_ext(par_ext),
  field_lengthIndicator(par_lengthIndicator),
  field_lSA__Information(par_lSA__Information)
{
}

LSA__Information__BSSGP::LSA__Information__BSSGP(const LSA__Information__BSSGP& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.LSA_Information_BSSGP.");
if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
else field_iEI.clean_up();
if (other_value.ext().is_bound()) field_ext = other_value.ext();
else field_ext.clean_up();
if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
else field_lengthIndicator.clean_up();
if (other_value.lSA__Information().is_bound()) field_lSA__Information = other_value.lSA__Information();
else field_lSA__Information.clean_up();
}

void LSA__Information__BSSGP::clean_up()
{
field_iEI.clean_up();
field_ext.clean_up();
field_lengthIndicator.clean_up();
field_lSA__Information.clean_up();
}

const TTCN_Typedescriptor_t* LSA__Information__BSSGP::get_descriptor() const { return &LSA__Information__BSSGP_descr_; }
LSA__Information__BSSGP& LSA__Information__BSSGP::operator=(const LSA__Information__BSSGP& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.LSA_Information_BSSGP.");
  if (other_value.iEI().is_bound()) field_iEI = other_value.iEI();
  else field_iEI.clean_up();
  if (other_value.ext().is_bound()) field_ext = other_value.ext();
  else field_ext.clean_up();
  if (other_value.lengthIndicator().is_bound()) field_lengthIndicator = other_value.lengthIndicator();
  else field_lengthIndicator.clean_up();
  if (other_value.lSA__Information().is_bound()) field_lSA__Information = other_value.lSA__Information();
  else field_lSA__Information.clean_up();
}
return *this;
}

boolean LSA__Information__BSSGP::operator==(const LSA__Information__BSSGP& other_value) const
{
return field_iEI==other_value.field_iEI
  && field_ext==other_value.field_ext
  && field_lengthIndicator==other_value.field_lengthIndicator
  && field_lSA__Information==other_value.field_lSA__Information;
}

boolean LSA__Information__BSSGP::is_bound() const
{
return (field_iEI.is_bound())
  || (field_ext.is_bound())
  || (field_lengthIndicator.is_bound())
  || (field_lSA__Information.is_bound());
}
boolean LSA__Information__BSSGP::is_value() const
{
return field_iEI.is_value()
  && field_ext.is_value()
  && field_lengthIndicator.is_value()
  && field_lSA__Information.is_value();
}
void LSA__Information__BSSGP::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ iEI := ");
field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
field_lengthIndicator.log();
TTCN_Logger::log_event_str(", lSA_Information := ");
field_lSA__Information.log();
TTCN_Logger::log_event_str(" }");
}

void LSA__Information__BSSGP::set_implicit_omit()
{
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (lSA__Information().is_bound()) lSA__Information().set_implicit_omit();
}

void LSA__Information__BSSGP::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record value of type @BSSGP_Types.LSA_Information_BSSGP has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lSA__Information().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lSA_Information")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lSA__Information().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LSA_Information_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.LSA_Information_BSSGP");
  }
}

void LSA__Information__BSSGP::encode_text(Text_Buf& text_buf) const
{
field_iEI.encode_text(text_buf);
field_ext.encode_text(text_buf);
field_lengthIndicator.encode_text(text_buf);
field_lSA__Information.encode_text(text_buf);
}

void LSA__Information__BSSGP::decode_text(Text_Buf& text_buf)
{
field_iEI.decode_text(text_buf);
field_ext.decode_text(text_buf);
field_lengthIndicator.decode_text(text_buf);
field_lSA__Information.decode_text(text_buf);
}

void LSA__Information__BSSGP::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void LSA__Information__BSSGP::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int LSA__Information__BSSGP::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  int value_of_length_field2 = 0;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::OCT1_descr_.raw->forceomit);
  decoded_field_length = field_iEI.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, LSA__Information__BSSGP_ext_descr_.raw->forceomit);
  decoded_field_length = field_ext.RAW_decode(LSA__Information__BSSGP_ext_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_ext ==  bs_0) selected_field = 0;
  else if (field_ext ==  bs_1) selected_field = 1;
  else selected_field = -1;
  RAW_Force_Omit field_2_force_omit(2, force_omit, LSA__Information__BSSGP_lengthIndicator_descr_.raw->forceomit);
  decoded_field_length = field_lengthIndicator.RAW_decode(LSA__Information__BSSGP_lengthIndicator_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1: {
    INTEGER tmp1 = field_lengthIndicator.length1().convert_to_Integer(LIN2__2a_length1_descr_);
    field_lengthIndicator.length1() = tmp1;
    value_of_length_field2 += tmp1.get_long_long_val() * 8;
    break; }
  case LIN2__2a::ALT_length2: {
    INTEGER tmp2 = field_lengthIndicator.length2().convert_to_Integer(LIN2__2a_length2_descr_);
    field_lengthIndicator.length2() = tmp2;
    value_of_length_field2 += tmp2.get_long_long_val() * 8;
    break; }
  default:
    value_of_length_field2 = 0;
  }
  RAW_Force_Omit field_3_force_omit(3, force_omit, LSA__Information_descr_.raw->forceomit);
  decoded_field_length = field_lSA__Information.RAW_decode(LSA__Information_descr_, p_buf, min_of_ints(2, limit, value_of_length_field2), local_top_order, no_err, -1, TRUE, &field_3_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  value_of_length_field2 -= decoded_field_length;
  if (field_iEI !=  os_7) return -1;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int LSA__Information__BSSGP::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 4;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::OCT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, LSA__Information__BSSGP_ext_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, LSA__Information__BSSGP_lengthIndicator_descr_.raw);
  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, LSA__Information_descr_.raw);
  encoded_length += field_iEI.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_ext.RAW_encode(LSA__Information__BSSGP_ext_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_lengthIndicator.RAW_encode(LSA__Information__BSSGP_lengthIndicator_descr_, *myleaf.body.node.nodes[2]);
  encoded_length += field_lSA__Information.RAW_encode(LSA__Information_descr_, *myleaf.body.node.nodes[3]);
  {
  int sel_field = 0;
  while (myleaf.body.node.nodes[2]->body.node.nodes[sel_field] == NULL) { sel_field++; }
  const TTCN_Typedescriptor_t* tmpTypeDesc = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr;
  int tmp_length = myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length;
  delete myleaf.body.node.nodes[2]->body.node.nodes[sel_field];
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field] = new RAW_enc_tree(TRUE, myleaf.body.node.nodes[2], &(myleaf.body.node.nodes[2]->curr_pos), sel_field, tmpTypeDesc->raw);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->length = tmp_length;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calc = CALC_LENGTH;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->coding_descr = tmpTypeDesc;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.num_of_fields = 1;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.unit = 8;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.offset = 0;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields = init_lengthto_fields_list(1);
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
  myleaf.body.node.nodes[2]->body.node.nodes[sel_field]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
  }
  switch (field_lengthIndicator.get_selection()) {
  case LIN2__2a::ALT_length1:
  if (field_ext !=  bs_0) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_0.RAW_encode(LSA__Information__BSSGP_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case LIN2__2a::ALT_length2:
  if (field_ext !=  bs_1) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 1 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_1.RAW_encode(LSA__Information__BSSGP_ext_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  if (field_iEI !=  os_7) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   os_7.RAW_encode(General__Types::OCT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct LSA__Information__BSSGP_template::single_value_struct {
OCTETSTRING_template field_iEI;
BITSTRING_template field_ext;
LIN2__2a_template field_lengthIndicator;
LSA__Information_template field_lSA__Information;
};

void LSA__Information__BSSGP_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_iEI = ANY_VALUE;
single_value->field_ext = ANY_VALUE;
single_value->field_lengthIndicator = ANY_VALUE;
single_value->field_lSA__Information = ANY_VALUE;
}
}
}

void LSA__Information__BSSGP_template::copy_value(const LSA__Information__BSSGP& other_value)
{
single_value = new single_value_struct;
if (other_value.iEI().is_bound()) {
  single_value->field_iEI = other_value.iEI();
} else {
  single_value->field_iEI.clean_up();
}
if (other_value.ext().is_bound()) {
  single_value->field_ext = other_value.ext();
} else {
  single_value->field_ext.clean_up();
}
if (other_value.lengthIndicator().is_bound()) {
  single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
  single_value->field_lengthIndicator.clean_up();
}
if (other_value.lSA__Information().is_bound()) {
  single_value->field_lSA__Information = other_value.lSA__Information();
} else {
  single_value->field_lSA__Information.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void LSA__Information__BSSGP_template::copy_template(const LSA__Information__BSSGP_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.iEI().get_selection()) {
single_value->field_iEI = other_value.iEI();
} else {
single_value->field_iEI.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.ext().get_selection()) {
single_value->field_ext = other_value.ext();
} else {
single_value->field_ext.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lengthIndicator().get_selection()) {
single_value->field_lengthIndicator = other_value.lengthIndicator();
} else {
single_value->field_lengthIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.lSA__Information().get_selection()) {
single_value->field_lSA__Information = other_value.lSA__Information();
} else {
single_value->field_lSA__Information.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new LSA__Information__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new LSA__Information__BSSGP_template(*other_value.implication_.precondition);
implication_.implied_template = new LSA__Information__BSSGP_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.LSA_Information_BSSGP.");
break;
}
set_selection(other_value);
}

LSA__Information__BSSGP_template::LSA__Information__BSSGP_template()
{
}

LSA__Information__BSSGP_template::LSA__Information__BSSGP_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

LSA__Information__BSSGP_template::LSA__Information__BSSGP_template(const LSA__Information__BSSGP& other_value)
{
copy_value(other_value);
}

LSA__Information__BSSGP_template::LSA__Information__BSSGP_template(const OPTIONAL<LSA__Information__BSSGP>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LSA__Information__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.LSA_Information_BSSGP from an unbound optional field.");
}
}

LSA__Information__BSSGP_template::LSA__Information__BSSGP_template(LSA__Information__BSSGP_template* p_precondition, LSA__Information__BSSGP_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

LSA__Information__BSSGP_template::LSA__Information__BSSGP_template(Dynamic_Match_Interface<LSA__Information__BSSGP>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<LSA__Information__BSSGP>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

LSA__Information__BSSGP_template::LSA__Information__BSSGP_template(const LSA__Information__BSSGP_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

LSA__Information__BSSGP_template::~LSA__Information__BSSGP_template()
{
clean_up();
}

LSA__Information__BSSGP_template& LSA__Information__BSSGP_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

LSA__Information__BSSGP_template& LSA__Information__BSSGP_template::operator=(const LSA__Information__BSSGP& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

LSA__Information__BSSGP_template& LSA__Information__BSSGP_template::operator=(const OPTIONAL<LSA__Information__BSSGP>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const LSA__Information__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.LSA_Information_BSSGP.");
}
return *this;
}

LSA__Information__BSSGP_template& LSA__Information__BSSGP_template::operator=(const LSA__Information__BSSGP_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean LSA__Information__BSSGP_template::match(const LSA__Information__BSSGP& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.iEI().is_bound()) return FALSE;
if(!single_value->field_iEI.match(other_value.iEI(), legacy))return FALSE;
if(!other_value.ext().is_bound()) return FALSE;
if(!single_value->field_ext.match(other_value.ext(), legacy))return FALSE;
if(!other_value.lengthIndicator().is_bound()) return FALSE;
if(!single_value->field_lengthIndicator.match(other_value.lengthIndicator(), legacy))return FALSE;
if(!other_value.lSA__Information().is_bound()) return FALSE;
if(!single_value->field_lSA__Information.match(other_value.lSA__Information(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.LSA_Information_BSSGP.");
}
return FALSE;
}

boolean LSA__Information__BSSGP_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_iEI.is_bound()
 || single_value->field_ext.is_bound()
 || single_value->field_lengthIndicator.is_bound()
 || single_value->field_lSA__Information.is_bound();
}

boolean LSA__Information__BSSGP_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_iEI.is_value()
 && single_value->field_ext.is_value()
 && single_value->field_lengthIndicator.is_value()
 && single_value->field_lSA__Information.is_value();
}

void LSA__Information__BSSGP_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

LSA__Information__BSSGP LSA__Information__BSSGP_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.LSA_Information_BSSGP.");
LSA__Information__BSSGP ret_val;
if (single_value->field_iEI.is_bound()) {
ret_val.iEI() = single_value->field_iEI.valueof();
}
if (single_value->field_ext.is_bound()) {
ret_val.ext() = single_value->field_ext.valueof();
}
if (single_value->field_lengthIndicator.is_bound()) {
ret_val.lengthIndicator() = single_value->field_lengthIndicator.valueof();
}
if (single_value->field_lSA__Information.is_bound()) {
ret_val.lSA__Information() = single_value->field_lSA__Information.valueof();
}
return ret_val;
}

void LSA__Information__BSSGP_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.LSA_Information_BSSGP.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new LSA__Information__BSSGP_template[list_length];
}

LSA__Information__BSSGP_template& LSA__Information__BSSGP_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.LSA_Information_BSSGP.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.LSA_Information_BSSGP.");
return value_list.list_value[list_index];
}

OCTETSTRING_template& LSA__Information__BSSGP_template::iEI()
{
set_specific();
return single_value->field_iEI;
}

const OCTETSTRING_template& LSA__Information__BSSGP_template::iEI() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field iEI of a non-specific template of type @BSSGP_Types.LSA_Information_BSSGP.");
return single_value->field_iEI;
}

BITSTRING_template& LSA__Information__BSSGP_template::ext()
{
set_specific();
return single_value->field_ext;
}

const BITSTRING_template& LSA__Information__BSSGP_template::ext() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field ext of a non-specific template of type @BSSGP_Types.LSA_Information_BSSGP.");
return single_value->field_ext;
}

LIN2__2a_template& LSA__Information__BSSGP_template::lengthIndicator()
{
set_specific();
return single_value->field_lengthIndicator;
}

const LIN2__2a_template& LSA__Information__BSSGP_template::lengthIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lengthIndicator of a non-specific template of type @BSSGP_Types.LSA_Information_BSSGP.");
return single_value->field_lengthIndicator;
}

LSA__Information_template& LSA__Information__BSSGP_template::lSA__Information()
{
set_specific();
return single_value->field_lSA__Information;
}

const LSA__Information_template& LSA__Information__BSSGP_template::lSA__Information() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field lSA_Information of a non-specific template of type @BSSGP_Types.LSA_Information_BSSGP.");
return single_value->field_lSA__Information;
}

int LSA__Information__BSSGP_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information_BSSGP which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 4;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information_BSSGP containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information_BSSGP containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information_BSSGP containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information_BSSGP containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information_BSSGP containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information_BSSGP containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information_BSSGP containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.LSA_Information_BSSGP containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.LSA_Information_BSSGP.");
  }
  return 0;
}

void LSA__Information__BSSGP_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log();
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log();
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log();
TTCN_Logger::log_event_str(", lSA_Information := ");
single_value->field_lSA__Information.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void LSA__Information__BSSGP_template::log_match(const LSA__Information__BSSGP& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_iEI.match(match_value.iEI(), legacy)){
TTCN_Logger::log_logmatch_info(".iEI");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_ext.match(match_value.ext(), legacy)){
TTCN_Logger::log_logmatch_info(".ext");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lengthIndicator.match(match_value.lengthIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".lengthIndicator");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_lSA__Information.match(match_value.lSA__Information(), legacy)){
TTCN_Logger::log_logmatch_info(".lSA_Information");
single_value->field_lSA__Information.log_match(match_value.lSA__Information(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ iEI := ");
single_value->field_iEI.log_match(match_value.iEI(), legacy);
TTCN_Logger::log_event_str(", ext := ");
single_value->field_ext.log_match(match_value.ext(), legacy);
TTCN_Logger::log_event_str(", lengthIndicator := ");
single_value->field_lengthIndicator.log_match(match_value.lengthIndicator(), legacy);
TTCN_Logger::log_event_str(", lSA_Information := ");
single_value->field_lSA__Information.log_match(match_value.lSA__Information(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void LSA__Information__BSSGP_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (iEI().is_bound()) iEI().set_implicit_omit();
if (ext().is_bound()) ext().set_implicit_omit();
if (lengthIndicator().is_bound()) lengthIndicator().set_implicit_omit();
if (lSA__Information().is_bound()) lSA__Information().set_implicit_omit();
}

void LSA__Information__BSSGP_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_iEI.encode_text(text_buf);
single_value->field_ext.encode_text(text_buf);
single_value->field_lengthIndicator.encode_text(text_buf);
single_value->field_lSA__Information.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.LSA_Information_BSSGP.");
}
}

void LSA__Information__BSSGP_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_iEI.decode_text(text_buf);
single_value->field_ext.decode_text(text_buf);
single_value->field_lengthIndicator.decode_text(text_buf);
single_value->field_lSA__Information.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new LSA__Information__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.LSA_Information_BSSGP.");
}
}

void LSA__Information__BSSGP_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    LSA__Information__BSSGP_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (4<param.get_size()) {
      param.error("record template of type @BSSGP_Types.LSA_Information_BSSGP has 4 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) iEI().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ext().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lengthIndicator().set_param(*param.get_elem(2));
    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lSA__Information().set_param(*param.get_elem(3));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "iEI")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          iEI().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "ext")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          ext().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lengthIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lengthIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "lSA_Information")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          lSA__Information().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.LSA_Information_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    LSA__Information__BSSGP_template* precondition = new LSA__Information__BSSGP_template;
    precondition->set_param(*param.get_elem(0));
    LSA__Information__BSSGP_template* implied_template = new LSA__Information__BSSGP_template;
    implied_template->set_param(*param.get_elem(1));
    *this = LSA__Information__BSSGP_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.LSA_Information_BSSGP");
  }
  is_ifpresent = param.get_ifpresent();
}

void LSA__Information__BSSGP_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_iEI.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Information_BSSGP");
single_value->field_ext.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Information_BSSGP");
single_value->field_lengthIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Information_BSSGP");
single_value->field_lSA__Information.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.LSA_Information_BSSGP");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.LSA_Information_BSSGP");
}

boolean LSA__Information__BSSGP_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean LSA__Information__BSSGP_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

void OddEvenInd__Identity__BSSGP::copy_value(const OddEvenInd__Identity__BSSGP& other_value)
{
switch (other_value.union_selection) {
case ALT_imsi:
field_imsi = new IMSI__MobileIdentityV(*other_value.field_imsi);
break;
case ALT_imei:
field_imei = new IMEI__MobileIdentityV(*other_value.field_imei);
break;
case ALT_imei__sv:
field_imei__sv = new IMEI__SV__MobileIdentityV(*other_value.field_imei__sv);
break;
default:
TTCN_error("Assignment of an unbound union value of type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
union_selection = other_value.union_selection;
}

OddEvenInd__Identity__BSSGP::OddEvenInd__Identity__BSSGP()
{
union_selection = UNBOUND_VALUE;
}

OddEvenInd__Identity__BSSGP::OddEvenInd__Identity__BSSGP(const OddEvenInd__Identity__BSSGP& other_value)
: Base_Type(){
copy_value(other_value);
}

OddEvenInd__Identity__BSSGP::~OddEvenInd__Identity__BSSGP()
{
clean_up();
}

OddEvenInd__Identity__BSSGP& OddEvenInd__Identity__BSSGP::operator=(const OddEvenInd__Identity__BSSGP& other_value)
{
if (this != &other_value) {
clean_up();
copy_value(other_value);
}
return *this;
}

boolean OddEvenInd__Identity__BSSGP::operator==(const OddEvenInd__Identity__BSSGP& other_value) const
{
if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
if (union_selection != other_value.union_selection) return FALSE;
switch (union_selection) {
case ALT_imsi:
return *field_imsi == *other_value.field_imsi;
case ALT_imei:
return *field_imei == *other_value.field_imei;
case ALT_imei__sv:
return *field_imei__sv == *other_value.field_imei__sv;
default:
return FALSE;
}
}

IMSI__MobileIdentityV& OddEvenInd__Identity__BSSGP::imsi()
{
if (union_selection != ALT_imsi) {
clean_up();
field_imsi = new IMSI__MobileIdentityV;
union_selection = ALT_imsi;
}
return *field_imsi;
}

const IMSI__MobileIdentityV& OddEvenInd__Identity__BSSGP::imsi() const
{
if (union_selection != ALT_imsi) TTCN_error("Using non-selected field imsi in a value of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
return *field_imsi;
}

IMEI__MobileIdentityV& OddEvenInd__Identity__BSSGP::imei()
{
if (union_selection != ALT_imei) {
clean_up();
field_imei = new IMEI__MobileIdentityV;
union_selection = ALT_imei;
}
return *field_imei;
}

const IMEI__MobileIdentityV& OddEvenInd__Identity__BSSGP::imei() const
{
if (union_selection != ALT_imei) TTCN_error("Using non-selected field imei in a value of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
return *field_imei;
}

IMEI__SV__MobileIdentityV& OddEvenInd__Identity__BSSGP::imei__sv()
{
if (union_selection != ALT_imei__sv) {
clean_up();
field_imei__sv = new IMEI__SV__MobileIdentityV;
union_selection = ALT_imei__sv;
}
return *field_imei__sv;
}

const IMEI__SV__MobileIdentityV& OddEvenInd__Identity__BSSGP::imei__sv() const
{
if (union_selection != ALT_imei__sv) TTCN_error("Using non-selected field imei_sv in a value of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
return *field_imei__sv;
}

boolean OddEvenInd__Identity__BSSGP::ischosen(union_selection_type checked_selection) const
{
if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
return union_selection == checked_selection;
}

boolean OddEvenInd__Identity__BSSGP::is_bound() const
{
  return union_selection != UNBOUND_VALUE;
}

boolean OddEvenInd__Identity__BSSGP::is_value() const
{
switch (union_selection) {
case UNBOUND_VALUE: return FALSE;
case ALT_imsi: return field_imsi->is_value();
case ALT_imei: return field_imei->is_value();
case ALT_imei__sv: return field_imei__sv->is_value();
default: TTCN_error("Invalid selection in union is_bound");}
}

void OddEvenInd__Identity__BSSGP::clean_up()
{
switch (union_selection) {
case ALT_imsi:
  delete field_imsi;
  break;
case ALT_imei:
  delete field_imei;
  break;
case ALT_imei__sv:
  delete field_imei__sv;
  break;
default:
  break;
}
union_selection = UNBOUND_VALUE;
}

void OddEvenInd__Identity__BSSGP::log() const
{
switch (union_selection) {
case ALT_imsi:
TTCN_Logger::log_event_str("{ imsi := ");
field_imsi->log();
TTCN_Logger::log_event_str(" }");
break;
case ALT_imei:
TTCN_Logger::log_event_str("{ imei := ");
field_imei->log();
TTCN_Logger::log_event_str(" }");
break;
case ALT_imei__sv:
TTCN_Logger::log_event_str("{ imei_sv := ");
field_imei__sv->log();
TTCN_Logger::log_event_str(" }");
break;
default:
TTCN_Logger::log_event_unbound();
}
}

void OddEvenInd__Identity__BSSGP::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "union value");
  Module_Param_Ptr m_p = &param;
  if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return;
  if (m_p->get_type()!=Module_Param::MP_Assignment_List) {
    param.error("union value with field name was expected");
  }
  Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1);
  char* last_name = mp_last->get_id()->get_name();
  if (!strcmp(last_name, "imsi")) {
    imsi().set_param(*mp_last);
    if (!imsi().is_bound()) clean_up();
    return;
  }
  if (!strcmp(last_name, "imei")) {
    imei().set_param(*mp_last);
    if (!imei().is_bound()) clean_up();
    return;
  }
  if (!strcmp(last_name, "imei_sv")) {
    imei__sv().set_param(*mp_last);
    if (!imei__sv().is_bound()) clean_up();
    return;
  }
  mp_last->error("Field %s does not exist in type @BSSGP_Types.OddEvenInd_Identity_BSSGP.", last_name);
}

void OddEvenInd__Identity__BSSGP::set_implicit_omit()
{
switch (union_selection) {
case ALT_imsi:
field_imsi->set_implicit_omit(); break;
case ALT_imei:
field_imei->set_implicit_omit(); break;
case ALT_imei__sv:
field_imei__sv->set_implicit_omit(); break;
default: break;
}
}

void OddEvenInd__Identity__BSSGP::encode_text(Text_Buf& text_buf) const
{
text_buf.push_int(union_selection);
switch (union_selection) {
case ALT_imsi:
field_imsi->encode_text(text_buf);
break;
case ALT_imei:
field_imei->encode_text(text_buf);
break;
case ALT_imei__sv:
field_imei__sv->encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an unbound value of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
}

void OddEvenInd__Identity__BSSGP::decode_text(Text_Buf& text_buf)
{
switch ((union_selection_type)text_buf.pull_int().get_val()) {
case ALT_imsi:
imsi().decode_text(text_buf);
break;
case ALT_imei:
imei().decode_text(text_buf);
break;
case ALT_imei__sv:
imei__sv().decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: Unrecognized union selector was received for type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
}

void OddEvenInd__Identity__BSSGP::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void OddEvenInd__Identity__BSSGP::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int OddEvenInd__Identity__BSSGP::RAW_decode(
const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, 
raw_order_t top_bit_ord, boolean no_err, int sel_field, boolean, const RAW_Force_Omit* force_omit)
{
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  int decoded_length=0;
  int starting_pos=p_buf.get_pos_bit();
  if(sel_field!=-1){
    switch(sel_field){
    case 0: {
      RAW_Force_Omit field_force_omit(0, force_omit, IMSI__MobileIdentityV_descr_.raw->forceomit);
      decoded_length = imsi().RAW_decode(IMSI__MobileIdentityV_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
      break; }
    case 1: {
      RAW_Force_Omit field_force_omit(1, force_omit, IMEI__MobileIdentityV_descr_.raw->forceomit);
      decoded_length = imei().RAW_decode(IMEI__MobileIdentityV_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
      break; }
    case 2: {
      RAW_Force_Omit field_force_omit(2, force_omit, IMEI__SV__MobileIdentityV_descr_.raw->forceomit);
      decoded_length = imei__sv().RAW_decode(IMEI__SV__MobileIdentityV_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
      break; }
    default: break;
    }
    return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
  } else {
      p_buf.set_pos_bit(starting_pos);
      RAW_Force_Omit field_0_force_omit(0, force_omit, IMSI__MobileIdentityV_descr_.raw->forceomit);
      decoded_length = imsi().RAW_decode(IMSI__MobileIdentityV_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_0_force_omit);
      if (decoded_length >= 0) {
         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
       }
      p_buf.set_pos_bit(starting_pos);
      RAW_Force_Omit field_1_force_omit(1, force_omit, IMEI__MobileIdentityV_descr_.raw->forceomit);
      decoded_length = imei().RAW_decode(IMEI__MobileIdentityV_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_1_force_omit);
      if (decoded_length >= 0) {
         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
       }
      p_buf.set_pos_bit(starting_pos);
      RAW_Force_Omit field_2_force_omit(2, force_omit, IMEI__SV__MobileIdentityV_descr_.raw->forceomit);
      decoded_length = imei__sv().RAW_decode(IMEI__SV__MobileIdentityV_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_2_force_omit);
      if (decoded_length >= 0) {
         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
       }
 }
 clean_up();
 return -1;
}

int OddEvenInd__Identity__BSSGP::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
{
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 3;  myleaf.body.node.nodes = init_nodes_of_enc_tree(3);
  memset(myleaf.body.node.nodes, 0, 3 * sizeof(RAW_enc_tree *));
  switch (union_selection) {
  case ALT_imsi:
    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, IMSI__MobileIdentityV_descr_.raw);
    encoded_length = field_imsi->RAW_encode(IMSI__MobileIdentityV_descr_, *myleaf.body.node.nodes[0]);
    myleaf.body.node.nodes[0]->coding_descr = &IMSI__MobileIdentityV_descr_;
    break;
  case ALT_imei:
    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, IMEI__MobileIdentityV_descr_.raw);
    encoded_length = field_imei->RAW_encode(IMEI__MobileIdentityV_descr_, *myleaf.body.node.nodes[1]);
    myleaf.body.node.nodes[1]->coding_descr = &IMEI__MobileIdentityV_descr_;
    break;
  case ALT_imei__sv:
    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, IMEI__SV__MobileIdentityV_descr_.raw);
    encoded_length = field_imei__sv->RAW_encode(IMEI__SV__MobileIdentityV_descr_, *myleaf.body.node.nodes[2]);
    myleaf.body.node.nodes[2]->coding_descr = &IMEI__SV__MobileIdentityV_descr_;
    break;
  default:
    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  }
  return encoded_length;
}

void OddEvenInd__Identity__BSSGP_template::copy_value(const OddEvenInd__Identity__BSSGP& other_value)
{
single_value.union_selection = other_value.get_selection();
switch (single_value.union_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
single_value.field_imsi = new IMSI__MobileIdentityV_template(other_value.imsi());
break;
case OddEvenInd__Identity__BSSGP::ALT_imei:
single_value.field_imei = new IMEI__MobileIdentityV_template(other_value.imei());
break;
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
single_value.field_imei__sv = new IMEI__SV__MobileIdentityV_template(other_value.imei__sv());
break;
default:
TTCN_error("Initializing a template with an unbound value of type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
set_selection(SPECIFIC_VALUE);
}

void OddEvenInd__Identity__BSSGP_template::copy_template(const OddEvenInd__Identity__BSSGP_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value.union_selection = other_value.single_value.union_selection;
switch (single_value.union_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
single_value.field_imsi = new IMSI__MobileIdentityV_template(*other_value.single_value.field_imsi);
break;
case OddEvenInd__Identity__BSSGP::ALT_imei:
single_value.field_imei = new IMEI__MobileIdentityV_template(*other_value.single_value.field_imei);
break;
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
single_value.field_imei__sv = new IMEI__SV__MobileIdentityV_template(*other_value.single_value.field_imei__sv);
break;
default:
TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new OddEvenInd__Identity__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new OddEvenInd__Identity__BSSGP_template(*other_value.implication_.precondition);
implication_.implied_template = new OddEvenInd__Identity__BSSGP_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
set_selection(other_value);
}

OddEvenInd__Identity__BSSGP_template::OddEvenInd__Identity__BSSGP_template()
{
}

OddEvenInd__Identity__BSSGP_template::OddEvenInd__Identity__BSSGP_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

OddEvenInd__Identity__BSSGP_template::OddEvenInd__Identity__BSSGP_template(const OddEvenInd__Identity__BSSGP& other_value)
{
copy_value(other_value);
}

OddEvenInd__Identity__BSSGP_template::OddEvenInd__Identity__BSSGP_template(const OPTIONAL<OddEvenInd__Identity__BSSGP>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const OddEvenInd__Identity__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP from an unbound optional field.");
}
}

OddEvenInd__Identity__BSSGP_template::OddEvenInd__Identity__BSSGP_template(OddEvenInd__Identity__BSSGP_template* p_precondition, OddEvenInd__Identity__BSSGP_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

OddEvenInd__Identity__BSSGP_template::OddEvenInd__Identity__BSSGP_template(Dynamic_Match_Interface<OddEvenInd__Identity__BSSGP>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<OddEvenInd__Identity__BSSGP>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

OddEvenInd__Identity__BSSGP_template::OddEvenInd__Identity__BSSGP_template(const OddEvenInd__Identity__BSSGP_template& other_value)
: Base_Template(){
copy_template(other_value);
}

OddEvenInd__Identity__BSSGP_template::~OddEvenInd__Identity__BSSGP_template()
{
clean_up();
}

void OddEvenInd__Identity__BSSGP_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
switch (single_value.union_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
delete single_value.field_imsi;
break;
case OddEvenInd__Identity__BSSGP::ALT_imei:
delete single_value.field_imei;
break;
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
delete single_value.field_imei__sv;
default:
break;
}
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

OddEvenInd__Identity__BSSGP_template& OddEvenInd__Identity__BSSGP_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

OddEvenInd__Identity__BSSGP_template& OddEvenInd__Identity__BSSGP_template::operator=(const OddEvenInd__Identity__BSSGP& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

OddEvenInd__Identity__BSSGP_template& OddEvenInd__Identity__BSSGP_template::operator=(const OPTIONAL<OddEvenInd__Identity__BSSGP>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const OddEvenInd__Identity__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
return *this;
}

OddEvenInd__Identity__BSSGP_template& OddEvenInd__Identity__BSSGP_template::operator=(const OddEvenInd__Identity__BSSGP_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean OddEvenInd__Identity__BSSGP_template::match(const OddEvenInd__Identity__BSSGP& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
{
OddEvenInd__Identity__BSSGP::union_selection_type value_selection = other_value.get_selection();
if (value_selection == OddEvenInd__Identity__BSSGP::UNBOUND_VALUE) return FALSE;
if (value_selection != single_value.union_selection) return FALSE;
switch (value_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
return single_value.field_imsi->match(other_value.imsi(), legacy);
case OddEvenInd__Identity__BSSGP::ALT_imei:
return single_value.field_imei->match(other_value.imei(), legacy);
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
return single_value.field_imei__sv->match(other_value.imei__sv(), legacy);
default:
TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
}
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error ("Matching an uninitialized template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
return FALSE;
}

boolean OddEvenInd__Identity__BSSGP_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
switch (single_value.union_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
return single_value.field_imsi->is_value();
case OddEvenInd__Identity__BSSGP::ALT_imei:
return single_value.field_imei->is_value();
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
return single_value.field_imei__sv->is_value();
default:
TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
}

OddEvenInd__Identity__BSSGP OddEvenInd__Identity__BSSGP_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
OddEvenInd__Identity__BSSGP ret_val;
switch (single_value.union_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
ret_val.imsi() = single_value.field_imsi->valueof();
break;
case OddEvenInd__Identity__BSSGP::ALT_imei:
ret_val.imei() = single_value.field_imei->valueof();
break;
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
ret_val.imei__sv() = single_value.field_imei__sv->valueof();
break;
default:
TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
return ret_val;
}

OddEvenInd__Identity__BSSGP_template& OddEvenInd__Identity__BSSGP_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
return value_list.list_value[list_index];
}
void OddEvenInd__Identity__BSSGP_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new OddEvenInd__Identity__BSSGP_template[list_length];
}

IMSI__MobileIdentityV_template& OddEvenInd__Identity__BSSGP_template::imsi()
{
if (template_selection != SPECIFIC_VALUE || single_value.union_selection != OddEvenInd__Identity__BSSGP::ALT_imsi) {
template_sel old_selection = template_selection;
clean_up();
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_imsi = new IMSI__MobileIdentityV_template(ANY_VALUE);
else single_value.field_imsi = new IMSI__MobileIdentityV_template;
single_value.union_selection = OddEvenInd__Identity__BSSGP::ALT_imsi;
set_selection(SPECIFIC_VALUE);
}
return *single_value.field_imsi;
}

const IMSI__MobileIdentityV_template& OddEvenInd__Identity__BSSGP_template::imsi() const
{
if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field imsi in a non-specific template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
if (single_value.union_selection != OddEvenInd__Identity__BSSGP::ALT_imsi) TTCN_error("Accessing non-selected field imsi in a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
return *single_value.field_imsi;
}

IMEI__MobileIdentityV_template& OddEvenInd__Identity__BSSGP_template::imei()
{
if (template_selection != SPECIFIC_VALUE || single_value.union_selection != OddEvenInd__Identity__BSSGP::ALT_imei) {
template_sel old_selection = template_selection;
clean_up();
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_imei = new IMEI__MobileIdentityV_template(ANY_VALUE);
else single_value.field_imei = new IMEI__MobileIdentityV_template;
single_value.union_selection = OddEvenInd__Identity__BSSGP::ALT_imei;
set_selection(SPECIFIC_VALUE);
}
return *single_value.field_imei;
}

const IMEI__MobileIdentityV_template& OddEvenInd__Identity__BSSGP_template::imei() const
{
if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field imei in a non-specific template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
if (single_value.union_selection != OddEvenInd__Identity__BSSGP::ALT_imei) TTCN_error("Accessing non-selected field imei in a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
return *single_value.field_imei;
}

IMEI__SV__MobileIdentityV_template& OddEvenInd__Identity__BSSGP_template::imei__sv()
{
if (template_selection != SPECIFIC_VALUE || single_value.union_selection != OddEvenInd__Identity__BSSGP::ALT_imei__sv) {
template_sel old_selection = template_selection;
clean_up();
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_imei__sv = new IMEI__SV__MobileIdentityV_template(ANY_VALUE);
else single_value.field_imei__sv = new IMEI__SV__MobileIdentityV_template;
single_value.union_selection = OddEvenInd__Identity__BSSGP::ALT_imei__sv;
set_selection(SPECIFIC_VALUE);
}
return *single_value.field_imei__sv;
}

const IMEI__SV__MobileIdentityV_template& OddEvenInd__Identity__BSSGP_template::imei__sv() const
{
if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field imei_sv in a non-specific template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
if (single_value.union_selection != OddEvenInd__Identity__BSSGP::ALT_imei__sv) TTCN_error("Accessing non-selected field imei_sv in a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
return *single_value.field_imei__sv;
}

boolean OddEvenInd__Identity__BSSGP_template::ischosen(OddEvenInd__Identity__BSSGP::union_selection_type checked_selection) const
{
if (checked_selection == OddEvenInd__Identity__BSSGP::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
switch (template_selection) {
case SPECIFIC_VALUE:
if (single_value.union_selection == OddEvenInd__Identity__BSSGP::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
return single_value.union_selection == checked_selection;
case VALUE_LIST:
{
if (value_list.n_values < 1)
TTCN_error("Internal error: Performing ischosen() operation on a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP containing an empty list.");
boolean ret_val = value_list.list_value[0].ischosen(checked_selection);
for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) {
ret_val = value_list.list_value[list_count].ischosen(checked_selection);
}
return ret_val;
}
default:
return FALSE;
}
return FALSE;
}

void OddEvenInd__Identity__BSSGP_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
switch (single_value.union_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
TTCN_Logger::log_event_str("{ imsi := ");
single_value.field_imsi->log();
TTCN_Logger::log_event_str(" }");
break;
case OddEvenInd__Identity__BSSGP::ALT_imei:
TTCN_Logger::log_event_str("{ imei := ");
single_value.field_imei->log();
TTCN_Logger::log_event_str(" }");
break;
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
TTCN_Logger::log_event_str("{ imei_sv := ");
single_value.field_imei__sv->log();
TTCN_Logger::log_event_str(" }");
break;
default:
TTCN_Logger::log_event_str("<invalid selector>");
}
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void OddEvenInd__Identity__BSSGP_template::log_match(const OddEvenInd__Identity__BSSGP& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
return;
}
if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
switch (single_value.union_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
TTCN_Logger::log_logmatch_info(".imsi");
single_value.field_imsi->log_match(match_value.imsi(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
} else {
TTCN_Logger::log_event_str("{ imsi := ");
single_value.field_imsi->log_match(match_value.imsi(), legacy);
TTCN_Logger::log_event_str(" }");
}
break;
case OddEvenInd__Identity__BSSGP::ALT_imei:
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
TTCN_Logger::log_logmatch_info(".imei");
single_value.field_imei->log_match(match_value.imei(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
} else {
TTCN_Logger::log_event_str("{ imei := ");
single_value.field_imei->log_match(match_value.imei(), legacy);
TTCN_Logger::log_event_str(" }");
}
break;
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
TTCN_Logger::log_logmatch_info(".imei_sv");
single_value.field_imei__sv->log_match(match_value.imei__sv(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
} else {
TTCN_Logger::log_event_str("{ imei_sv := ");
single_value.field_imei__sv->log_match(match_value.imei__sv(), legacy);
TTCN_Logger::log_event_str(" }");
}
break;
default:
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str("<invalid selector>");
}
} else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void OddEvenInd__Identity__BSSGP_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
switch (single_value.union_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
single_value.field_imsi->set_implicit_omit(); break;
case OddEvenInd__Identity__BSSGP::ALT_imei:
single_value.field_imei->set_implicit_omit(); break;
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
single_value.field_imei__sv->set_implicit_omit(); break;
default: break;
}
}

void OddEvenInd__Identity__BSSGP_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
text_buf.push_int(single_value.union_selection);
switch (single_value.union_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
single_value.field_imsi->encode_text(text_buf);
break;
case OddEvenInd__Identity__BSSGP::ALT_imei:
single_value.field_imei->encode_text(text_buf);
break;
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
single_value.field_imei__sv->encode_text(text_buf);
break;
default:
TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized template of type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
}

void OddEvenInd__Identity__BSSGP_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
{
single_value.union_selection = OddEvenInd__Identity__BSSGP::UNBOUND_VALUE;
OddEvenInd__Identity__BSSGP::union_selection_type new_selection = (OddEvenInd__Identity__BSSGP::union_selection_type)text_buf.pull_int().get_val();
switch (new_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
single_value.field_imsi = new IMSI__MobileIdentityV_template;
single_value.field_imsi->decode_text(text_buf);
break;
case OddEvenInd__Identity__BSSGP::ALT_imei:
single_value.field_imei = new IMEI__MobileIdentityV_template;
single_value.field_imei->decode_text(text_buf);
break;
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
single_value.field_imei__sv = new IMEI__SV__MobileIdentityV_template;
single_value.field_imei__sv->decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
single_value.union_selection = new_selection;
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new OddEvenInd__Identity__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: Unrecognized selector was received in a template of type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
}

boolean OddEvenInd__Identity__BSSGP_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean OddEvenInd__Identity__BSSGP_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int v_idx=0; v_idx<value_list.n_values; v_idx++)
if (value_list.list_value[v_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

void OddEvenInd__Identity__BSSGP_template::set_param(Module_Param& param)
{
  if (dynamic_cast<Module_Param_Name*>(param.get_id()) != NULL &&
      param.get_id()->next_name()) {
    char* param_field = param.get_id()->get_current_name();
    if (param_field[0] >= '0' && param_field[0] <= '9') {
      param.error("Unexpected array index in module parameter, expected a valid field"
        " name for union template type `@BSSGP_Types.OddEvenInd_Identity_BSSGP'");
    }
    if (strcmp("imsi", param_field) == 0) {
      imsi().set_param(param);
      return;
    } else if (strcmp("imei", param_field) == 0) {
      imei().set_param(param);
      return;
    } else if (strcmp("imei_sv", param_field) == 0) {
      imei__sv().set_param(param);
      return;
    } else param.error("Field `%s' not found in union template type `@BSSGP_Types.OddEvenInd_Identity_BSSGP'", param_field);
  }
  param.basic_check(Module_Param::BC_TEMPLATE, "union template");
  Module_Param_Ptr m_p = &param;
  switch (m_p->get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    OddEvenInd__Identity__BSSGP_template new_temp;
    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size());
    for (size_t p_i=0; p_i<m_p->get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (m_p->get_size()==0) break;
    param.type_error("union template", "@BSSGP_Types.OddEvenInd_Identity_BSSGP");
    break;
  case Module_Param::MP_Assignment_List: {
    Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1);
    char* last_name = mp_last->get_id()->get_name();
    if (!strcmp(last_name, "imsi")) {
      imsi().set_param(*mp_last);
      break;
    }
    if (!strcmp(last_name, "imei")) {
      imei().set_param(*mp_last);
      break;
    }
    if (!strcmp(last_name, "imei_sv")) {
      imei__sv().set_param(*mp_last);
      break;
    }
    mp_last->error("Field %s does not exist in type @BSSGP_Types.OddEvenInd_Identity_BSSGP.", last_name);
  } break;
  case Module_Param::MP_Implication_Template: {
    OddEvenInd__Identity__BSSGP_template* precondition = new OddEvenInd__Identity__BSSGP_template;
    precondition->set_param(*m_p->get_elem(0));
    OddEvenInd__Identity__BSSGP_template* implied_template = new OddEvenInd__Identity__BSSGP_template;
    implied_template->set_param(*m_p->get_elem(1));
    *this = OddEvenInd__Identity__BSSGP_template(precondition, implied_template);
  } break;
  default:
    param.type_error("union template", "@BSSGP_Types.OddEvenInd_Identity_BSSGP");
  }
  is_ifpresent = param.get_ifpresent();
}

void OddEvenInd__Identity__BSSGP_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
switch (single_value.union_selection) {
case OddEvenInd__Identity__BSSGP::ALT_imsi:
single_value.field_imsi->check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.OddEvenInd_Identity_BSSGP");
return;
case OddEvenInd__Identity__BSSGP::ALT_imei:
single_value.field_imei->check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.OddEvenInd_Identity_BSSGP");
return;
case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
single_value.field_imei__sv->check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.OddEvenInd_Identity_BSSGP");
return;
default:
TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @BSSGP_Types.OddEvenInd_Identity_BSSGP.");
}
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.OddEvenInd_Identity_BSSGP");
}

IMSI__MobileIdentityV::IMSI__MobileIdentityV()
{
}

IMSI__MobileIdentityV::IMSI__MobileIdentityV(const BITSTRING& par_oddevenIndicator,
    const HEXSTRING& par_digits,
    const OPTIONAL< BITSTRING >& par_fillerDigit)
  :   field_oddevenIndicator(par_oddevenIndicator),
  field_digits(par_digits),
  field_fillerDigit(par_fillerDigit)
{
}

IMSI__MobileIdentityV::IMSI__MobileIdentityV(const IMSI__MobileIdentityV& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.IMSI_MobileIdentityV.");
if (other_value.oddevenIndicator().is_bound()) field_oddevenIndicator = other_value.oddevenIndicator();
else field_oddevenIndicator.clean_up();
if (other_value.digits().is_bound()) field_digits = other_value.digits();
else field_digits.clean_up();
if (other_value.fillerDigit().is_bound()) field_fillerDigit = other_value.fillerDigit();
else field_fillerDigit.clean_up();
}

void IMSI__MobileIdentityV::clean_up()
{
field_oddevenIndicator.clean_up();
field_digits.clean_up();
field_fillerDigit.clean_up();
}

const TTCN_Typedescriptor_t* IMSI__MobileIdentityV::get_descriptor() const { return &IMSI__MobileIdentityV_descr_; }
IMSI__MobileIdentityV& IMSI__MobileIdentityV::operator=(const IMSI__MobileIdentityV& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.IMSI_MobileIdentityV.");
  if (other_value.oddevenIndicator().is_bound()) field_oddevenIndicator = other_value.oddevenIndicator();
  else field_oddevenIndicator.clean_up();
  if (other_value.digits().is_bound()) field_digits = other_value.digits();
  else field_digits.clean_up();
  if (other_value.fillerDigit().is_bound()) field_fillerDigit = other_value.fillerDigit();
  else field_fillerDigit.clean_up();
}
return *this;
}

boolean IMSI__MobileIdentityV::operator==(const IMSI__MobileIdentityV& other_value) const
{
return field_oddevenIndicator==other_value.field_oddevenIndicator
  && field_digits==other_value.field_digits
  && field_fillerDigit==other_value.field_fillerDigit;
}

boolean IMSI__MobileIdentityV::is_bound() const
{
return (field_oddevenIndicator.is_bound())
  || (field_digits.is_bound())
  || (OPTIONAL_OMIT == field_fillerDigit.get_selection() || field_fillerDigit.is_bound());
}
boolean IMSI__MobileIdentityV::is_value() const
{
return field_oddevenIndicator.is_value()
  && field_digits.is_value()
  && (OPTIONAL_OMIT == field_fillerDigit.get_selection() || field_fillerDigit.is_value());
}
int IMSI__MobileIdentityV::size_of() const
{
  int ret_val = 2;
  if (field_fillerDigit.ispresent()) ret_val++;
  return ret_val;
}

void IMSI__MobileIdentityV::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ oddevenIndicator := ");
field_oddevenIndicator.log();
TTCN_Logger::log_event_str(", digits := ");
field_digits.log();
TTCN_Logger::log_event_str(", fillerDigit := ");
field_fillerDigit.log();
TTCN_Logger::log_event_str(" }");
}

void IMSI__MobileIdentityV::set_implicit_omit()
{
if (oddevenIndicator().is_bound()) oddevenIndicator().set_implicit_omit();
if (digits().is_bound()) digits().set_implicit_omit();
if (!fillerDigit().is_bound()) fillerDigit() = OMIT_VALUE;
else fillerDigit().set_implicit_omit();
}

void IMSI__MobileIdentityV::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (3<param.get_size()) {
      param.error("record value of type @BSSGP_Types.IMSI_MobileIdentityV has 3 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) oddevenIndicator().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) digits().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) fillerDigit().set_param(*param.get_elem(2));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "oddevenIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          oddevenIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "digits")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          digits().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "fillerDigit")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          fillerDigit().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.IMSI_MobileIdentityV: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.IMSI_MobileIdentityV");
  }
}

void IMSI__MobileIdentityV::encode_text(Text_Buf& text_buf) const
{
field_oddevenIndicator.encode_text(text_buf);
field_digits.encode_text(text_buf);
field_fillerDigit.encode_text(text_buf);
}

void IMSI__MobileIdentityV::decode_text(Text_Buf& text_buf)
{
field_oddevenIndicator.decode_text(text_buf);
field_digits.decode_text(text_buf);
field_fillerDigit.decode_text(text_buf);
}

void IMSI__MobileIdentityV::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void IMSI__MobileIdentityV::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int IMSI__MobileIdentityV::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::BIT1_descr_.raw->forceomit);
  decoded_field_length = field_oddevenIndicator.RAW_decode(General__Types::BIT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, HEXSTRING_descr_.raw->forceomit);
  decoded_field_length = field_digits.RAW_decode(HEXSTRING_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (limit > 0 && field_oddevenIndicator ==  bs_1){
  if (force_omit != NULL && (*force_omit)(2)) {
    field_fillerDigit = OMIT_VALUE;
  }
  else {
  size_t fl_start_pos = p_buf.get_pos_bit();
  RAW_Force_Omit field_2_force_omit(2, force_omit, IMSI__MobileIdentityV_fillerDigit_descr_.raw->forceomit);
  decoded_field_length = field_fillerDigit().RAW_decode(IMSI__MobileIdentityV_fillerDigit_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 1) {
  field_fillerDigit = OMIT_VALUE;
  p_buf.set_pos_bit(fl_start_pos);
  } else {
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  }
  }
  }
  else field_fillerDigit=OMIT_VALUE;
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int IMSI__MobileIdentityV::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 3;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(3);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::BIT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, HEXSTRING_descr_.raw);
  if (field_fillerDigit.ispresent()) {
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, IMSI__MobileIdentityV_fillerDigit_descr_.raw);
  }
  else myleaf.body.node.nodes[2] = NULL;
  encoded_length += field_oddevenIndicator.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_digits.RAW_encode(HEXSTRING_descr_, *myleaf.body.node.nodes[1]);
  if (field_fillerDigit.ispresent()) {
  encoded_length += field_fillerDigit().RAW_encode(IMSI__MobileIdentityV_fillerDigit_descr_, *myleaf.body.node.nodes[2]);
  }
  if (field_fillerDigit.ispresent() && (field_oddevenIndicator !=  bs_1)) {
  RAW_enc_tree* temp_leaf;
  {
  RAW_enc_tr_pos pr_pos0;
  pr_pos0.level=myleaf.curr_pos.level+1;
  int new_pos0[]={0};
  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,1,new_pos0);
  temp_leaf = myleaf.get_node(pr_pos0);
  if(temp_leaf != NULL){
   bs_1.RAW_encode(General__Types::BIT1_descr_,*temp_leaf);
  } else {
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  }
  free_tree_pos(pr_pos0.pos);
  }
  }
  return myleaf.length = encoded_length;
}

struct IMSI__MobileIdentityV_template::single_value_struct {
BITSTRING_template field_oddevenIndicator;
HEXSTRING_template field_digits;
BITSTRING_template field_fillerDigit;
};

void IMSI__MobileIdentityV_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_oddevenIndicator = ANY_VALUE;
single_value->field_digits = ANY_VALUE;
single_value->field_fillerDigit = ANY_OR_OMIT;
}
}
}

void IMSI__MobileIdentityV_template::copy_value(const IMSI__MobileIdentityV& other_value)
{
single_value = new single_value_struct;
if (other_value.oddevenIndicator().is_bound()) {
  single_value->field_oddevenIndicator = other_value.oddevenIndicator();
} else {
  single_value->field_oddevenIndicator.clean_up();
}
if (other_value.digits().is_bound()) {
  single_value->field_digits = other_value.digits();
} else {
  single_value->field_digits.clean_up();
}
if (other_value.fillerDigit().is_bound()) {
  if (other_value.fillerDigit().ispresent()) single_value->field_fillerDigit = other_value.fillerDigit()();
  else single_value->field_fillerDigit = OMIT_VALUE;
} else {
  single_value->field_fillerDigit.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void IMSI__MobileIdentityV_template::copy_template(const IMSI__MobileIdentityV_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.oddevenIndicator().get_selection()) {
single_value->field_oddevenIndicator = other_value.oddevenIndicator();
} else {
single_value->field_oddevenIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.digits().get_selection()) {
single_value->field_digits = other_value.digits();
} else {
single_value->field_digits.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.fillerDigit().get_selection()) {
single_value->field_fillerDigit = other_value.fillerDigit();
} else {
single_value->field_fillerDigit.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new IMSI__MobileIdentityV_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new IMSI__MobileIdentityV_template(*other_value.implication_.precondition);
implication_.implied_template = new IMSI__MobileIdentityV_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.IMSI_MobileIdentityV.");
break;
}
set_selection(other_value);
}

IMSI__MobileIdentityV_template::IMSI__MobileIdentityV_template()
{
}

IMSI__MobileIdentityV_template::IMSI__MobileIdentityV_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

IMSI__MobileIdentityV_template::IMSI__MobileIdentityV_template(const IMSI__MobileIdentityV& other_value)
{
copy_value(other_value);
}

IMSI__MobileIdentityV_template::IMSI__MobileIdentityV_template(const OPTIONAL<IMSI__MobileIdentityV>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const IMSI__MobileIdentityV&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.IMSI_MobileIdentityV from an unbound optional field.");
}
}

IMSI__MobileIdentityV_template::IMSI__MobileIdentityV_template(IMSI__MobileIdentityV_template* p_precondition, IMSI__MobileIdentityV_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

IMSI__MobileIdentityV_template::IMSI__MobileIdentityV_template(Dynamic_Match_Interface<IMSI__MobileIdentityV>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<IMSI__MobileIdentityV>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

IMSI__MobileIdentityV_template::IMSI__MobileIdentityV_template(const IMSI__MobileIdentityV_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

IMSI__MobileIdentityV_template::~IMSI__MobileIdentityV_template()
{
clean_up();
}

IMSI__MobileIdentityV_template& IMSI__MobileIdentityV_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

IMSI__MobileIdentityV_template& IMSI__MobileIdentityV_template::operator=(const IMSI__MobileIdentityV& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

IMSI__MobileIdentityV_template& IMSI__MobileIdentityV_template::operator=(const OPTIONAL<IMSI__MobileIdentityV>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const IMSI__MobileIdentityV&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.IMSI_MobileIdentityV.");
}
return *this;
}

IMSI__MobileIdentityV_template& IMSI__MobileIdentityV_template::operator=(const IMSI__MobileIdentityV_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean IMSI__MobileIdentityV_template::match(const IMSI__MobileIdentityV& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.oddevenIndicator().is_bound()) return FALSE;
if(!single_value->field_oddevenIndicator.match(other_value.oddevenIndicator(), legacy))return FALSE;
if(!other_value.digits().is_bound()) return FALSE;
if(!single_value->field_digits.match(other_value.digits(), legacy))return FALSE;
if(!other_value.fillerDigit().is_bound()) return FALSE;
if((other_value.fillerDigit().ispresent() ? !single_value->field_fillerDigit.match((const BITSTRING&)other_value.fillerDigit(), legacy) : !single_value->field_fillerDigit.match_omit(legacy)))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.IMSI_MobileIdentityV.");
}
return FALSE;
}

boolean IMSI__MobileIdentityV_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_oddevenIndicator.is_bound()
 || single_value->field_digits.is_bound()
 || (single_value->field_fillerDigit.is_omit() || single_value->field_fillerDigit.is_bound());
}

boolean IMSI__MobileIdentityV_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_oddevenIndicator.is_value()
 && single_value->field_digits.is_value()
 && (single_value->field_fillerDigit.is_omit() || single_value->field_fillerDigit.is_value());
}

void IMSI__MobileIdentityV_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

IMSI__MobileIdentityV IMSI__MobileIdentityV_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.IMSI_MobileIdentityV.");
IMSI__MobileIdentityV ret_val;
if (single_value->field_oddevenIndicator.is_bound()) {
ret_val.oddevenIndicator() = single_value->field_oddevenIndicator.valueof();
}
if (single_value->field_digits.is_bound()) {
ret_val.digits() = single_value->field_digits.valueof();
}
if (single_value->field_fillerDigit.is_omit()) ret_val.fillerDigit() = OMIT_VALUE;
else if (single_value->field_fillerDigit.is_bound()) {
ret_val.fillerDigit() = single_value->field_fillerDigit.valueof();
}
return ret_val;
}

void IMSI__MobileIdentityV_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.IMSI_MobileIdentityV.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new IMSI__MobileIdentityV_template[list_length];
}

IMSI__MobileIdentityV_template& IMSI__MobileIdentityV_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.IMSI_MobileIdentityV.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.IMSI_MobileIdentityV.");
return value_list.list_value[list_index];
}

BITSTRING_template& IMSI__MobileIdentityV_template::oddevenIndicator()
{
set_specific();
return single_value->field_oddevenIndicator;
}

const BITSTRING_template& IMSI__MobileIdentityV_template::oddevenIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field oddevenIndicator of a non-specific template of type @BSSGP_Types.IMSI_MobileIdentityV.");
return single_value->field_oddevenIndicator;
}

HEXSTRING_template& IMSI__MobileIdentityV_template::digits()
{
set_specific();
return single_value->field_digits;
}

const HEXSTRING_template& IMSI__MobileIdentityV_template::digits() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field digits of a non-specific template of type @BSSGP_Types.IMSI_MobileIdentityV.");
return single_value->field_digits;
}

BITSTRING_template& IMSI__MobileIdentityV_template::fillerDigit()
{
set_specific();
return single_value->field_fillerDigit;
}

const BITSTRING_template& IMSI__MobileIdentityV_template::fillerDigit() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field fillerDigit of a non-specific template of type @BSSGP_Types.IMSI_MobileIdentityV.");
return single_value->field_fillerDigit;
}

int IMSI__MobileIdentityV_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_MobileIdentityV which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
  {    int ret_val = 2;
      if (single_value->field_fillerDigit.is_present()) ret_val++;
      return ret_val;
    }
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_MobileIdentityV containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_MobileIdentityV containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_MobileIdentityV containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_MobileIdentityV containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_MobileIdentityV containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_MobileIdentityV containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_MobileIdentityV containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMSI_MobileIdentityV containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.IMSI_MobileIdentityV.");
  }
  return 0;
}

void IMSI__MobileIdentityV_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ oddevenIndicator := ");
single_value->field_oddevenIndicator.log();
TTCN_Logger::log_event_str(", digits := ");
single_value->field_digits.log();
TTCN_Logger::log_event_str(", fillerDigit := ");
single_value->field_fillerDigit.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void IMSI__MobileIdentityV_template::log_match(const IMSI__MobileIdentityV& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_oddevenIndicator.match(match_value.oddevenIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".oddevenIndicator");
single_value->field_oddevenIndicator.log_match(match_value.oddevenIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_digits.match(match_value.digits(), legacy)){
TTCN_Logger::log_logmatch_info(".digits");
single_value->field_digits.log_match(match_value.digits(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if (match_value.fillerDigit().ispresent()){
if(!single_value->field_fillerDigit.match(match_value.fillerDigit(), legacy)){
TTCN_Logger::log_logmatch_info(".fillerDigit");
single_value->field_fillerDigit.log_match(match_value.fillerDigit(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
} else {
if (!single_value->field_fillerDigit.match_omit(legacy)){
 TTCN_Logger::log_logmatch_info(".fillerDigit := omit with ");
TTCN_Logger::print_logmatch_buffer();
single_value->field_fillerDigit.log();
TTCN_Logger::log_event_str(" unmatched");
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ oddevenIndicator := ");
single_value->field_oddevenIndicator.log_match(match_value.oddevenIndicator(), legacy);
TTCN_Logger::log_event_str(", digits := ");
single_value->field_digits.log_match(match_value.digits(), legacy);
TTCN_Logger::log_event_str(", fillerDigit := ");
if (match_value.fillerDigit().ispresent()) {
single_value->field_fillerDigit.log_match(match_value.fillerDigit(), legacy);
} else {
TTCN_Logger::log_event_str("omit with ");
single_value->field_fillerDigit.log();
if (single_value->field_fillerDigit.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void IMSI__MobileIdentityV_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (oddevenIndicator().is_bound()) oddevenIndicator().set_implicit_omit();
if (digits().is_bound()) digits().set_implicit_omit();
if (!fillerDigit().is_bound()) fillerDigit() = OMIT_VALUE;
else fillerDigit().set_implicit_omit();
}

void IMSI__MobileIdentityV_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_oddevenIndicator.encode_text(text_buf);
single_value->field_digits.encode_text(text_buf);
single_value->field_fillerDigit.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.IMSI_MobileIdentityV.");
}
}

void IMSI__MobileIdentityV_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_oddevenIndicator.decode_text(text_buf);
single_value->field_digits.decode_text(text_buf);
single_value->field_fillerDigit.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new IMSI__MobileIdentityV_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.IMSI_MobileIdentityV.");
}
}

void IMSI__MobileIdentityV_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    IMSI__MobileIdentityV_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (3<param.get_size()) {
      param.error("record template of type @BSSGP_Types.IMSI_MobileIdentityV has 3 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) oddevenIndicator().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) digits().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) fillerDigit().set_param(*param.get_elem(2));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "oddevenIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          oddevenIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "digits")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          digits().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "fillerDigit")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          fillerDigit().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.IMSI_MobileIdentityV: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    IMSI__MobileIdentityV_template* precondition = new IMSI__MobileIdentityV_template;
    precondition->set_param(*param.get_elem(0));
    IMSI__MobileIdentityV_template* implied_template = new IMSI__MobileIdentityV_template;
    implied_template->set_param(*param.get_elem(1));
    *this = IMSI__MobileIdentityV_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.IMSI_MobileIdentityV");
  }
  is_ifpresent = param.get_ifpresent();
}

void IMSI__MobileIdentityV_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_oddevenIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMSI_MobileIdentityV");
single_value->field_digits.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMSI_MobileIdentityV");
single_value->field_fillerDigit.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMSI_MobileIdentityV");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.IMSI_MobileIdentityV");
}

boolean IMSI__MobileIdentityV_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean IMSI__MobileIdentityV_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

IMEI__MobileIdentityV::IMEI__MobileIdentityV()
{
}

IMEI__MobileIdentityV::IMEI__MobileIdentityV(const BITSTRING& par_oddevenIndicator,
    const HEXSTRING& par_digits)
  :   field_oddevenIndicator(par_oddevenIndicator),
  field_digits(par_digits)
{
}

IMEI__MobileIdentityV::IMEI__MobileIdentityV(const IMEI__MobileIdentityV& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.IMEI_MobileIdentityV.");
if (other_value.oddevenIndicator().is_bound()) field_oddevenIndicator = other_value.oddevenIndicator();
else field_oddevenIndicator.clean_up();
if (other_value.digits().is_bound()) field_digits = other_value.digits();
else field_digits.clean_up();
}

void IMEI__MobileIdentityV::clean_up()
{
field_oddevenIndicator.clean_up();
field_digits.clean_up();
}

const TTCN_Typedescriptor_t* IMEI__MobileIdentityV::get_descriptor() const { return &IMEI__MobileIdentityV_descr_; }
IMEI__MobileIdentityV& IMEI__MobileIdentityV::operator=(const IMEI__MobileIdentityV& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.IMEI_MobileIdentityV.");
  if (other_value.oddevenIndicator().is_bound()) field_oddevenIndicator = other_value.oddevenIndicator();
  else field_oddevenIndicator.clean_up();
  if (other_value.digits().is_bound()) field_digits = other_value.digits();
  else field_digits.clean_up();
}
return *this;
}

boolean IMEI__MobileIdentityV::operator==(const IMEI__MobileIdentityV& other_value) const
{
return field_oddevenIndicator==other_value.field_oddevenIndicator
  && field_digits==other_value.field_digits;
}

boolean IMEI__MobileIdentityV::is_bound() const
{
return (field_oddevenIndicator.is_bound())
  || (field_digits.is_bound());
}
boolean IMEI__MobileIdentityV::is_value() const
{
return field_oddevenIndicator.is_value()
  && field_digits.is_value();
}
void IMEI__MobileIdentityV::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ oddevenIndicator := ");
field_oddevenIndicator.log();
TTCN_Logger::log_event_str(", digits := ");
field_digits.log();
TTCN_Logger::log_event_str(" }");
}

void IMEI__MobileIdentityV::set_implicit_omit()
{
if (oddevenIndicator().is_bound()) oddevenIndicator().set_implicit_omit();
if (digits().is_bound()) digits().set_implicit_omit();
}

void IMEI__MobileIdentityV::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (2<param.get_size()) {
      param.error("record value of type @BSSGP_Types.IMEI_MobileIdentityV has 2 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) oddevenIndicator().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) digits().set_param(*param.get_elem(1));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "oddevenIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          oddevenIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "digits")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          digits().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.IMEI_MobileIdentityV: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.IMEI_MobileIdentityV");
  }
}

void IMEI__MobileIdentityV::encode_text(Text_Buf& text_buf) const
{
field_oddevenIndicator.encode_text(text_buf);
field_digits.encode_text(text_buf);
}

void IMEI__MobileIdentityV::decode_text(Text_Buf& text_buf)
{
field_oddevenIndicator.decode_text(text_buf);
field_digits.decode_text(text_buf);
}

void IMEI__MobileIdentityV::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void IMEI__MobileIdentityV::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int IMEI__MobileIdentityV::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::BIT1_descr_.raw->forceomit);
  decoded_field_length = field_oddevenIndicator.RAW_decode(General__Types::BIT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, IMEI__MobileIdentityV_digits_descr_.raw->forceomit);
  decoded_field_length = field_digits.RAW_decode(IMEI__MobileIdentityV_digits_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int IMEI__MobileIdentityV::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 2;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(2);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::BIT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IMEI__MobileIdentityV_digits_descr_.raw);
  encoded_length += field_oddevenIndicator.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_digits.RAW_encode(IMEI__MobileIdentityV_digits_descr_, *myleaf.body.node.nodes[1]);
  return myleaf.length = encoded_length;
}

struct IMEI__MobileIdentityV_template::single_value_struct {
BITSTRING_template field_oddevenIndicator;
HEXSTRING_template field_digits;
};

void IMEI__MobileIdentityV_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_oddevenIndicator = ANY_VALUE;
single_value->field_digits = ANY_VALUE;
}
}
}

void IMEI__MobileIdentityV_template::copy_value(const IMEI__MobileIdentityV& other_value)
{
single_value = new single_value_struct;
if (other_value.oddevenIndicator().is_bound()) {
  single_value->field_oddevenIndicator = other_value.oddevenIndicator();
} else {
  single_value->field_oddevenIndicator.clean_up();
}
if (other_value.digits().is_bound()) {
  single_value->field_digits = other_value.digits();
} else {
  single_value->field_digits.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void IMEI__MobileIdentityV_template::copy_template(const IMEI__MobileIdentityV_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.oddevenIndicator().get_selection()) {
single_value->field_oddevenIndicator = other_value.oddevenIndicator();
} else {
single_value->field_oddevenIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.digits().get_selection()) {
single_value->field_digits = other_value.digits();
} else {
single_value->field_digits.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new IMEI__MobileIdentityV_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new IMEI__MobileIdentityV_template(*other_value.implication_.precondition);
implication_.implied_template = new IMEI__MobileIdentityV_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.IMEI_MobileIdentityV.");
break;
}
set_selection(other_value);
}

IMEI__MobileIdentityV_template::IMEI__MobileIdentityV_template()
{
}

IMEI__MobileIdentityV_template::IMEI__MobileIdentityV_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

IMEI__MobileIdentityV_template::IMEI__MobileIdentityV_template(const IMEI__MobileIdentityV& other_value)
{
copy_value(other_value);
}

IMEI__MobileIdentityV_template::IMEI__MobileIdentityV_template(const OPTIONAL<IMEI__MobileIdentityV>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const IMEI__MobileIdentityV&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.IMEI_MobileIdentityV from an unbound optional field.");
}
}

IMEI__MobileIdentityV_template::IMEI__MobileIdentityV_template(IMEI__MobileIdentityV_template* p_precondition, IMEI__MobileIdentityV_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

IMEI__MobileIdentityV_template::IMEI__MobileIdentityV_template(Dynamic_Match_Interface<IMEI__MobileIdentityV>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<IMEI__MobileIdentityV>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

IMEI__MobileIdentityV_template::IMEI__MobileIdentityV_template(const IMEI__MobileIdentityV_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

IMEI__MobileIdentityV_template::~IMEI__MobileIdentityV_template()
{
clean_up();
}

IMEI__MobileIdentityV_template& IMEI__MobileIdentityV_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

IMEI__MobileIdentityV_template& IMEI__MobileIdentityV_template::operator=(const IMEI__MobileIdentityV& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

IMEI__MobileIdentityV_template& IMEI__MobileIdentityV_template::operator=(const OPTIONAL<IMEI__MobileIdentityV>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const IMEI__MobileIdentityV&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.IMEI_MobileIdentityV.");
}
return *this;
}

IMEI__MobileIdentityV_template& IMEI__MobileIdentityV_template::operator=(const IMEI__MobileIdentityV_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean IMEI__MobileIdentityV_template::match(const IMEI__MobileIdentityV& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.oddevenIndicator().is_bound()) return FALSE;
if(!single_value->field_oddevenIndicator.match(other_value.oddevenIndicator(), legacy))return FALSE;
if(!other_value.digits().is_bound()) return FALSE;
if(!single_value->field_digits.match(other_value.digits(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.IMEI_MobileIdentityV.");
}
return FALSE;
}

boolean IMEI__MobileIdentityV_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_oddevenIndicator.is_bound()
 || single_value->field_digits.is_bound();
}

boolean IMEI__MobileIdentityV_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_oddevenIndicator.is_value()
 && single_value->field_digits.is_value();
}

void IMEI__MobileIdentityV_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

IMEI__MobileIdentityV IMEI__MobileIdentityV_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.IMEI_MobileIdentityV.");
IMEI__MobileIdentityV ret_val;
if (single_value->field_oddevenIndicator.is_bound()) {
ret_val.oddevenIndicator() = single_value->field_oddevenIndicator.valueof();
}
if (single_value->field_digits.is_bound()) {
ret_val.digits() = single_value->field_digits.valueof();
}
return ret_val;
}

void IMEI__MobileIdentityV_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.IMEI_MobileIdentityV.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new IMEI__MobileIdentityV_template[list_length];
}

IMEI__MobileIdentityV_template& IMEI__MobileIdentityV_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.IMEI_MobileIdentityV.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.IMEI_MobileIdentityV.");
return value_list.list_value[list_index];
}

BITSTRING_template& IMEI__MobileIdentityV_template::oddevenIndicator()
{
set_specific();
return single_value->field_oddevenIndicator;
}

const BITSTRING_template& IMEI__MobileIdentityV_template::oddevenIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field oddevenIndicator of a non-specific template of type @BSSGP_Types.IMEI_MobileIdentityV.");
return single_value->field_oddevenIndicator;
}

HEXSTRING_template& IMEI__MobileIdentityV_template::digits()
{
set_specific();
return single_value->field_digits;
}

const HEXSTRING_template& IMEI__MobileIdentityV_template::digits() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field digits of a non-specific template of type @BSSGP_Types.IMEI_MobileIdentityV.");
return single_value->field_digits;
}

int IMEI__MobileIdentityV_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_MobileIdentityV which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 2;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_MobileIdentityV containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_MobileIdentityV containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_MobileIdentityV containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_MobileIdentityV containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_MobileIdentityV containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_MobileIdentityV containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_MobileIdentityV containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_MobileIdentityV containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.IMEI_MobileIdentityV.");
  }
  return 0;
}

void IMEI__MobileIdentityV_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ oddevenIndicator := ");
single_value->field_oddevenIndicator.log();
TTCN_Logger::log_event_str(", digits := ");
single_value->field_digits.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void IMEI__MobileIdentityV_template::log_match(const IMEI__MobileIdentityV& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_oddevenIndicator.match(match_value.oddevenIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".oddevenIndicator");
single_value->field_oddevenIndicator.log_match(match_value.oddevenIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_digits.match(match_value.digits(), legacy)){
TTCN_Logger::log_logmatch_info(".digits");
single_value->field_digits.log_match(match_value.digits(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ oddevenIndicator := ");
single_value->field_oddevenIndicator.log_match(match_value.oddevenIndicator(), legacy);
TTCN_Logger::log_event_str(", digits := ");
single_value->field_digits.log_match(match_value.digits(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void IMEI__MobileIdentityV_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (oddevenIndicator().is_bound()) oddevenIndicator().set_implicit_omit();
if (digits().is_bound()) digits().set_implicit_omit();
}

void IMEI__MobileIdentityV_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_oddevenIndicator.encode_text(text_buf);
single_value->field_digits.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.IMEI_MobileIdentityV.");
}
}

void IMEI__MobileIdentityV_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_oddevenIndicator.decode_text(text_buf);
single_value->field_digits.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new IMEI__MobileIdentityV_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.IMEI_MobileIdentityV.");
}
}

void IMEI__MobileIdentityV_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    IMEI__MobileIdentityV_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (2<param.get_size()) {
      param.error("record template of type @BSSGP_Types.IMEI_MobileIdentityV has 2 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) oddevenIndicator().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) digits().set_param(*param.get_elem(1));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "oddevenIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          oddevenIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "digits")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          digits().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.IMEI_MobileIdentityV: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    IMEI__MobileIdentityV_template* precondition = new IMEI__MobileIdentityV_template;
    precondition->set_param(*param.get_elem(0));
    IMEI__MobileIdentityV_template* implied_template = new IMEI__MobileIdentityV_template;
    implied_template->set_param(*param.get_elem(1));
    *this = IMEI__MobileIdentityV_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.IMEI_MobileIdentityV");
  }
  is_ifpresent = param.get_ifpresent();
}

void IMEI__MobileIdentityV_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_oddevenIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMEI_MobileIdentityV");
single_value->field_digits.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMEI_MobileIdentityV");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.IMEI_MobileIdentityV");
}

boolean IMEI__MobileIdentityV_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean IMEI__MobileIdentityV_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

IMEI__SV__MobileIdentityV::IMEI__SV__MobileIdentityV()
{
}

IMEI__SV__MobileIdentityV::IMEI__SV__MobileIdentityV(const BITSTRING& par_oddevenIndicator,
    const HEXSTRING& par_digits,
    const BITSTRING& par_fillerDigit)
  :   field_oddevenIndicator(par_oddevenIndicator),
  field_digits(par_digits),
  field_fillerDigit(par_fillerDigit)
{
}

IMEI__SV__MobileIdentityV::IMEI__SV__MobileIdentityV(const IMEI__SV__MobileIdentityV& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
if (other_value.oddevenIndicator().is_bound()) field_oddevenIndicator = other_value.oddevenIndicator();
else field_oddevenIndicator.clean_up();
if (other_value.digits().is_bound()) field_digits = other_value.digits();
else field_digits.clean_up();
if (other_value.fillerDigit().is_bound()) field_fillerDigit = other_value.fillerDigit();
else field_fillerDigit.clean_up();
}

void IMEI__SV__MobileIdentityV::clean_up()
{
field_oddevenIndicator.clean_up();
field_digits.clean_up();
field_fillerDigit.clean_up();
}

const TTCN_Typedescriptor_t* IMEI__SV__MobileIdentityV::get_descriptor() const { return &IMEI__SV__MobileIdentityV_descr_; }
IMEI__SV__MobileIdentityV& IMEI__SV__MobileIdentityV::operator=(const IMEI__SV__MobileIdentityV& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
  if (other_value.oddevenIndicator().is_bound()) field_oddevenIndicator = other_value.oddevenIndicator();
  else field_oddevenIndicator.clean_up();
  if (other_value.digits().is_bound()) field_digits = other_value.digits();
  else field_digits.clean_up();
  if (other_value.fillerDigit().is_bound()) field_fillerDigit = other_value.fillerDigit();
  else field_fillerDigit.clean_up();
}
return *this;
}

boolean IMEI__SV__MobileIdentityV::operator==(const IMEI__SV__MobileIdentityV& other_value) const
{
return field_oddevenIndicator==other_value.field_oddevenIndicator
  && field_digits==other_value.field_digits
  && field_fillerDigit==other_value.field_fillerDigit;
}

boolean IMEI__SV__MobileIdentityV::is_bound() const
{
return (field_oddevenIndicator.is_bound())
  || (field_digits.is_bound())
  || (field_fillerDigit.is_bound());
}
boolean IMEI__SV__MobileIdentityV::is_value() const
{
return field_oddevenIndicator.is_value()
  && field_digits.is_value()
  && field_fillerDigit.is_value();
}
void IMEI__SV__MobileIdentityV::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ oddevenIndicator := ");
field_oddevenIndicator.log();
TTCN_Logger::log_event_str(", digits := ");
field_digits.log();
TTCN_Logger::log_event_str(", fillerDigit := ");
field_fillerDigit.log();
TTCN_Logger::log_event_str(" }");
}

void IMEI__SV__MobileIdentityV::set_implicit_omit()
{
if (oddevenIndicator().is_bound()) oddevenIndicator().set_implicit_omit();
if (digits().is_bound()) digits().set_implicit_omit();
if (fillerDigit().is_bound()) fillerDigit().set_implicit_omit();
}

void IMEI__SV__MobileIdentityV::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (3<param.get_size()) {
      param.error("record value of type @BSSGP_Types.IMEI_SV_MobileIdentityV has 3 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) oddevenIndicator().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) digits().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) fillerDigit().set_param(*param.get_elem(2));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "oddevenIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          oddevenIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "digits")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          digits().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "fillerDigit")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          fillerDigit().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.IMEI_SV_MobileIdentityV: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.IMEI_SV_MobileIdentityV");
  }
}

void IMEI__SV__MobileIdentityV::encode_text(Text_Buf& text_buf) const
{
field_oddevenIndicator.encode_text(text_buf);
field_digits.encode_text(text_buf);
field_fillerDigit.encode_text(text_buf);
}

void IMEI__SV__MobileIdentityV::decode_text(Text_Buf& text_buf)
{
field_oddevenIndicator.decode_text(text_buf);
field_digits.decode_text(text_buf);
field_fillerDigit.decode_text(text_buf);
}

void IMEI__SV__MobileIdentityV::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void IMEI__SV__MobileIdentityV::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int IMEI__SV__MobileIdentityV::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::BIT1_descr_.raw->forceomit);
  decoded_field_length = field_oddevenIndicator.RAW_decode(General__Types::BIT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_1_force_omit(1, force_omit, IMEI__SV__MobileIdentityV_digits_descr_.raw->forceomit);
  decoded_field_length = field_digits.RAW_decode(IMEI__SV__MobileIdentityV_digits_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  RAW_Force_Omit field_2_force_omit(2, force_omit, General__Types::BIT4_descr_.raw->forceomit);
  decoded_field_length = field_fillerDigit.RAW_decode(General__Types::BIT4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int IMEI__SV__MobileIdentityV::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 3;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(3);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::BIT1_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IMEI__SV__MobileIdentityV_digits_descr_.raw);
  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::BIT4_descr_.raw);
  encoded_length += field_oddevenIndicator.RAW_encode(General__Types::BIT1_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_digits.RAW_encode(IMEI__SV__MobileIdentityV_digits_descr_, *myleaf.body.node.nodes[1]);
  encoded_length += field_fillerDigit.RAW_encode(General__Types::BIT4_descr_, *myleaf.body.node.nodes[2]);
  return myleaf.length = encoded_length;
}

struct IMEI__SV__MobileIdentityV_template::single_value_struct {
BITSTRING_template field_oddevenIndicator;
HEXSTRING_template field_digits;
BITSTRING_template field_fillerDigit;
};

void IMEI__SV__MobileIdentityV_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_oddevenIndicator = ANY_VALUE;
single_value->field_digits = ANY_VALUE;
single_value->field_fillerDigit = ANY_VALUE;
}
}
}

void IMEI__SV__MobileIdentityV_template::copy_value(const IMEI__SV__MobileIdentityV& other_value)
{
single_value = new single_value_struct;
if (other_value.oddevenIndicator().is_bound()) {
  single_value->field_oddevenIndicator = other_value.oddevenIndicator();
} else {
  single_value->field_oddevenIndicator.clean_up();
}
if (other_value.digits().is_bound()) {
  single_value->field_digits = other_value.digits();
} else {
  single_value->field_digits.clean_up();
}
if (other_value.fillerDigit().is_bound()) {
  single_value->field_fillerDigit = other_value.fillerDigit();
} else {
  single_value->field_fillerDigit.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void IMEI__SV__MobileIdentityV_template::copy_template(const IMEI__SV__MobileIdentityV_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.oddevenIndicator().get_selection()) {
single_value->field_oddevenIndicator = other_value.oddevenIndicator();
} else {
single_value->field_oddevenIndicator.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.digits().get_selection()) {
single_value->field_digits = other_value.digits();
} else {
single_value->field_digits.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.fillerDigit().get_selection()) {
single_value->field_fillerDigit = other_value.fillerDigit();
} else {
single_value->field_fillerDigit.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new IMEI__SV__MobileIdentityV_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new IMEI__SV__MobileIdentityV_template(*other_value.implication_.precondition);
implication_.implied_template = new IMEI__SV__MobileIdentityV_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
break;
}
set_selection(other_value);
}

IMEI__SV__MobileIdentityV_template::IMEI__SV__MobileIdentityV_template()
{
}

IMEI__SV__MobileIdentityV_template::IMEI__SV__MobileIdentityV_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

IMEI__SV__MobileIdentityV_template::IMEI__SV__MobileIdentityV_template(const IMEI__SV__MobileIdentityV& other_value)
{
copy_value(other_value);
}

IMEI__SV__MobileIdentityV_template::IMEI__SV__MobileIdentityV_template(const OPTIONAL<IMEI__SV__MobileIdentityV>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const IMEI__SV__MobileIdentityV&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV from an unbound optional field.");
}
}

IMEI__SV__MobileIdentityV_template::IMEI__SV__MobileIdentityV_template(IMEI__SV__MobileIdentityV_template* p_precondition, IMEI__SV__MobileIdentityV_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

IMEI__SV__MobileIdentityV_template::IMEI__SV__MobileIdentityV_template(Dynamic_Match_Interface<IMEI__SV__MobileIdentityV>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<IMEI__SV__MobileIdentityV>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

IMEI__SV__MobileIdentityV_template::IMEI__SV__MobileIdentityV_template(const IMEI__SV__MobileIdentityV_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

IMEI__SV__MobileIdentityV_template::~IMEI__SV__MobileIdentityV_template()
{
clean_up();
}

IMEI__SV__MobileIdentityV_template& IMEI__SV__MobileIdentityV_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

IMEI__SV__MobileIdentityV_template& IMEI__SV__MobileIdentityV_template::operator=(const IMEI__SV__MobileIdentityV& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

IMEI__SV__MobileIdentityV_template& IMEI__SV__MobileIdentityV_template::operator=(const OPTIONAL<IMEI__SV__MobileIdentityV>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const IMEI__SV__MobileIdentityV&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
}
return *this;
}

IMEI__SV__MobileIdentityV_template& IMEI__SV__MobileIdentityV_template::operator=(const IMEI__SV__MobileIdentityV_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean IMEI__SV__MobileIdentityV_template::match(const IMEI__SV__MobileIdentityV& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.oddevenIndicator().is_bound()) return FALSE;
if(!single_value->field_oddevenIndicator.match(other_value.oddevenIndicator(), legacy))return FALSE;
if(!other_value.digits().is_bound()) return FALSE;
if(!single_value->field_digits.match(other_value.digits(), legacy))return FALSE;
if(!other_value.fillerDigit().is_bound()) return FALSE;
if(!single_value->field_fillerDigit.match(other_value.fillerDigit(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
}
return FALSE;
}

boolean IMEI__SV__MobileIdentityV_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_oddevenIndicator.is_bound()
 || single_value->field_digits.is_bound()
 || single_value->field_fillerDigit.is_bound();
}

boolean IMEI__SV__MobileIdentityV_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_oddevenIndicator.is_value()
 && single_value->field_digits.is_value()
 && single_value->field_fillerDigit.is_value();
}

void IMEI__SV__MobileIdentityV_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

IMEI__SV__MobileIdentityV IMEI__SV__MobileIdentityV_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
IMEI__SV__MobileIdentityV ret_val;
if (single_value->field_oddevenIndicator.is_bound()) {
ret_val.oddevenIndicator() = single_value->field_oddevenIndicator.valueof();
}
if (single_value->field_digits.is_bound()) {
ret_val.digits() = single_value->field_digits.valueof();
}
if (single_value->field_fillerDigit.is_bound()) {
ret_val.fillerDigit() = single_value->field_fillerDigit.valueof();
}
return ret_val;
}

void IMEI__SV__MobileIdentityV_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new IMEI__SV__MobileIdentityV_template[list_length];
}

IMEI__SV__MobileIdentityV_template& IMEI__SV__MobileIdentityV_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
return value_list.list_value[list_index];
}

BITSTRING_template& IMEI__SV__MobileIdentityV_template::oddevenIndicator()
{
set_specific();
return single_value->field_oddevenIndicator;
}

const BITSTRING_template& IMEI__SV__MobileIdentityV_template::oddevenIndicator() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field oddevenIndicator of a non-specific template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
return single_value->field_oddevenIndicator;
}

HEXSTRING_template& IMEI__SV__MobileIdentityV_template::digits()
{
set_specific();
return single_value->field_digits;
}

const HEXSTRING_template& IMEI__SV__MobileIdentityV_template::digits() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field digits of a non-specific template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
return single_value->field_digits;
}

BITSTRING_template& IMEI__SV__MobileIdentityV_template::fillerDigit()
{
set_specific();
return single_value->field_fillerDigit;
}

const BITSTRING_template& IMEI__SV__MobileIdentityV_template::fillerDigit() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field fillerDigit of a non-specific template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
return single_value->field_fillerDigit;
}

int IMEI__SV__MobileIdentityV_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 3;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
  }
  return 0;
}

void IMEI__SV__MobileIdentityV_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ oddevenIndicator := ");
single_value->field_oddevenIndicator.log();
TTCN_Logger::log_event_str(", digits := ");
single_value->field_digits.log();
TTCN_Logger::log_event_str(", fillerDigit := ");
single_value->field_fillerDigit.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void IMEI__SV__MobileIdentityV_template::log_match(const IMEI__SV__MobileIdentityV& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_oddevenIndicator.match(match_value.oddevenIndicator(), legacy)){
TTCN_Logger::log_logmatch_info(".oddevenIndicator");
single_value->field_oddevenIndicator.log_match(match_value.oddevenIndicator(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_digits.match(match_value.digits(), legacy)){
TTCN_Logger::log_logmatch_info(".digits");
single_value->field_digits.log_match(match_value.digits(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_fillerDigit.match(match_value.fillerDigit(), legacy)){
TTCN_Logger::log_logmatch_info(".fillerDigit");
single_value->field_fillerDigit.log_match(match_value.fillerDigit(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ oddevenIndicator := ");
single_value->field_oddevenIndicator.log_match(match_value.oddevenIndicator(), legacy);
TTCN_Logger::log_event_str(", digits := ");
single_value->field_digits.log_match(match_value.digits(), legacy);
TTCN_Logger::log_event_str(", fillerDigit := ");
single_value->field_fillerDigit.log_match(match_value.fillerDigit(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void IMEI__SV__MobileIdentityV_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (oddevenIndicator().is_bound()) oddevenIndicator().set_implicit_omit();
if (digits().is_bound()) digits().set_implicit_omit();
if (fillerDigit().is_bound()) fillerDigit().set_implicit_omit();
}

void IMEI__SV__MobileIdentityV_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_oddevenIndicator.encode_text(text_buf);
single_value->field_digits.encode_text(text_buf);
single_value->field_fillerDigit.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
}
}

void IMEI__SV__MobileIdentityV_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_oddevenIndicator.decode_text(text_buf);
single_value->field_digits.decode_text(text_buf);
single_value->field_fillerDigit.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new IMEI__SV__MobileIdentityV_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.IMEI_SV_MobileIdentityV.");
}
}

void IMEI__SV__MobileIdentityV_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    IMEI__SV__MobileIdentityV_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (3<param.get_size()) {
      param.error("record template of type @BSSGP_Types.IMEI_SV_MobileIdentityV has 3 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) oddevenIndicator().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) digits().set_param(*param.get_elem(1));
    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) fillerDigit().set_param(*param.get_elem(2));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "oddevenIndicator")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          oddevenIndicator().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "digits")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          digits().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "fillerDigit")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          fillerDigit().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.IMEI_SV_MobileIdentityV: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    IMEI__SV__MobileIdentityV_template* precondition = new IMEI__SV__MobileIdentityV_template;
    precondition->set_param(*param.get_elem(0));
    IMEI__SV__MobileIdentityV_template* implied_template = new IMEI__SV__MobileIdentityV_template;
    implied_template->set_param(*param.get_elem(1));
    *this = IMEI__SV__MobileIdentityV_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.IMEI_SV_MobileIdentityV");
  }
  is_ifpresent = param.get_ifpresent();
}

void IMEI__SV__MobileIdentityV_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_oddevenIndicator.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMEI_SV_MobileIdentityV");
single_value->field_digits.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMEI_SV_MobileIdentityV");
single_value->field_fillerDigit.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.IMEI_SV_MobileIdentityV");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.IMEI_SV_MobileIdentityV");
}

boolean IMEI__SV__MobileIdentityV_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean IMEI__SV__MobileIdentityV_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}

MobileIdentityV__BSSGP::MobileIdentityV__BSSGP()
{
}

MobileIdentityV__BSSGP::MobileIdentityV__BSSGP(const BITSTRING& par_typeOfIdentity,
    const OddEvenInd__Identity__BSSGP& par_oddEvenInd__identity)
  :   field_typeOfIdentity(par_typeOfIdentity),
  field_oddEvenInd__identity(par_oddEvenInd__identity)
{
}

MobileIdentityV__BSSGP::MobileIdentityV__BSSGP(const MobileIdentityV__BSSGP& other_value)
{
if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @BSSGP_Types.MobileIdentityV_BSSGP.");
if (other_value.typeOfIdentity().is_bound()) field_typeOfIdentity = other_value.typeOfIdentity();
else field_typeOfIdentity.clean_up();
if (other_value.oddEvenInd__identity().is_bound()) field_oddEvenInd__identity = other_value.oddEvenInd__identity();
else field_oddEvenInd__identity.clean_up();
}

void MobileIdentityV__BSSGP::clean_up()
{
field_typeOfIdentity.clean_up();
field_oddEvenInd__identity.clean_up();
}

const TTCN_Typedescriptor_t* MobileIdentityV__BSSGP::get_descriptor() const { return &MobileIdentityV__BSSGP_descr_; }
MobileIdentityV__BSSGP& MobileIdentityV__BSSGP::operator=(const MobileIdentityV__BSSGP& other_value)
{
if (this != &other_value) {
  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @BSSGP_Types.MobileIdentityV_BSSGP.");
  if (other_value.typeOfIdentity().is_bound()) field_typeOfIdentity = other_value.typeOfIdentity();
  else field_typeOfIdentity.clean_up();
  if (other_value.oddEvenInd__identity().is_bound()) field_oddEvenInd__identity = other_value.oddEvenInd__identity();
  else field_oddEvenInd__identity.clean_up();
}
return *this;
}

boolean MobileIdentityV__BSSGP::operator==(const MobileIdentityV__BSSGP& other_value) const
{
return field_typeOfIdentity==other_value.field_typeOfIdentity
  && field_oddEvenInd__identity==other_value.field_oddEvenInd__identity;
}

boolean MobileIdentityV__BSSGP::is_bound() const
{
return (field_typeOfIdentity.is_bound())
  || (field_oddEvenInd__identity.is_bound());
}
boolean MobileIdentityV__BSSGP::is_value() const
{
return field_typeOfIdentity.is_value()
  && field_oddEvenInd__identity.is_value();
}
void MobileIdentityV__BSSGP::log() const
{
if (!is_bound()) {
TTCN_Logger::log_event_unbound();
return;
}
TTCN_Logger::log_event_str("{ typeOfIdentity := ");
field_typeOfIdentity.log();
TTCN_Logger::log_event_str(", oddEvenInd_identity := ");
field_oddEvenInd__identity.log();
TTCN_Logger::log_event_str(" }");
}

void MobileIdentityV__BSSGP::set_implicit_omit()
{
if (typeOfIdentity().is_bound()) typeOfIdentity().set_implicit_omit();
if (oddEvenInd__identity().is_bound()) oddEvenInd__identity().set_implicit_omit();
}

void MobileIdentityV__BSSGP::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_VALUE, "record value");
  switch (param.get_type()) {
  case Module_Param::MP_Value_List:
    if (2<param.get_size()) {
      param.error("record value of type @BSSGP_Types.MobileIdentityV_BSSGP has 2 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) typeOfIdentity().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) oddEvenInd__identity().set_param(*param.get_elem(1));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "typeOfIdentity")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          typeOfIdentity().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "oddEvenInd_identity")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          oddEvenInd__identity().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.MobileIdentityV_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  default:
    param.type_error("record value", "@BSSGP_Types.MobileIdentityV_BSSGP");
  }
}

void MobileIdentityV__BSSGP::encode_text(Text_Buf& text_buf) const
{
field_typeOfIdentity.encode_text(text_buf);
field_oddEvenInd__identity.encode_text(text_buf);
}

void MobileIdentityV__BSSGP::decode_text(Text_Buf& text_buf)
{
field_typeOfIdentity.decode_text(text_buf);
field_oddEvenInd__identity.decode_text(text_buf);
}

void MobileIdentityV__BSSGP::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name);
    unsigned BER_coding=va_arg(pvar, unsigned);
    BER_encode_chk_coding(BER_coding);
    ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding);
    tlv->put_in_buffer(p_buf);
    ASN_BER_TLV_t::destruct(tlv);
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    RAW_enc_tr_pos rp;
    rp.level=0;
    rp.pos=NULL;
    RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw);
    RAW_encode(p_td, root);
    root.put_to_buf(p_buf);
    break;}
  case TTCN_EncDec::CT_TEXT: {
    TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
      ("No TEXT descriptor available for type '%s'.", p_td.name);
    TEXT_encode(p_td,p_buf);
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0);
    p_buf.put_c('\n');
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok(va_arg(pvar, int) != 0);
    JSON_encode(p_td, tok, FALSE);
    p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
    OER_encode(p_td, p_buf);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name);
    if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    PER_encode(p_td, p_buf, opt);
    break; }
  default:
    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
  }
  va_end(pvar);
}

void MobileIdentityV__BSSGP::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...)
{
  va_list pvar;
  va_start(pvar, p_coding);
  switch(p_coding) {
  case TTCN_EncDec::CT_BER: {
    TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name);
    unsigned L_form=va_arg(pvar, unsigned);
    ASN_BER_TLV_t tlv;
    BER_decode_str2TLV(p_buf, tlv, L_form);
    BER_decode_TLV(p_td, tlv, L_form);
    if(tlv.isComplete) p_buf.increase_pos(tlv.get_len());
    break;}
  case TTCN_EncDec::CT_RAW: {
    TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name);
    if(!p_td.raw)
      TTCN_EncDec_ErrorContext::error_internal
        ("No RAW descriptor available for type '%s'.", p_td.name);
    raw_order_t r_order;
    switch(p_td.raw->top_bit_order) {
    case TOP_BIT_LEFT:
      r_order=ORDER_LSB;
      break;
    case TOP_BIT_RIGHT:
    default:
      r_order=ORDER_MSB;
    }
    int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order);
    if(rawr<0) switch (-rawr) {
    case TTCN_EncDec::ET_INCOMPL_MSG:
    case TTCN_EncDec::ET_LEN_ERR:
      ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name);
      break;
    case 1:
    default:
      ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name);
      break;
    }
    break;}
  case TTCN_EncDec::CT_TEXT: {
    Limit_Token_List limit;
    TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name);
    if(!p_td.text)
      TTCN_EncDec_ErrorContext::error_internal
        ("No TEXT descriptor available for type '%s'.", p_td.name);
    const unsigned char *b_data=p_buf.get_data();
    int null_added=0;
    if(b_data[p_buf.get_len()-1]!='\0'){
      null_added=1;
      p_buf.set_pos(p_buf.get_len());
      p_buf.put_zero(8,ORDER_LSB);
      p_buf.rewind();
    }
    if(TEXT_decode(p_td,p_buf,limit)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    if(null_added){
      size_t actpos=p_buf.get_pos();
      p_buf.set_pos(p_buf.get_len()-1);
      p_buf.cut_end();
      p_buf.set_pos(actpos);
    }
    break;}
  case TTCN_EncDec::CT_XER: {
    TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
    unsigned XER_coding=va_arg(pvar, unsigned);
    XER_encode_chk_coding(XER_coding, p_td);
    XmlReaderWrap reader(p_buf);
    for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) {
      if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break;
    }
    XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0);
    size_t bytes = reader.ByteConsumed();
    p_buf.set_pos(bytes);
    break;}
  case TTCN_EncDec::CT_JSON: {
    TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name);
    if(!p_td.json)
      TTCN_EncDec_ErrorContext::error_internal
        ("No JSON descriptor available for type '%s'.", p_td.name);
    JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len());
    if(JSON_decode(p_td, tok, FALSE, FALSE)<0)
      ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name);
    p_buf.set_pos(tok.get_buf_pos());
    break;}
  case TTCN_EncDec::CT_OER: {
    TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name);
    if(!p_td.oer)
      TTCN_EncDec_ErrorContext::error_internal
        ("No OER descriptor available for type '%s'.", p_td.name);
     OER_struct p_oer;
    OER_decode(p_td, p_buf, p_oer);
    break;}
  case TTCN_EncDec::CT_PER: {
    TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name);
    if(!p_td.per)  TTCN_EncDec_ErrorContext::error_internal(
      "No PER descriptor available for type '%s'.", p_td.name);
    int opt = va_arg(pvar, int);
    try {
      PER_decode(p_td, p_buf, opt);
      p_buf.PER_octet_align(FALSE);
    }
    catch (PER_Buffer_Exception) { }
    break; }
  default:
    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
  }
  va_end(pvar);
}

int MobileIdentityV__BSSGP::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit)
{ (void)no_err;
  int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding);
  limit-=prepaddlength;
  size_t last_decoded_pos = p_buf.get_pos_bit();
  int decoded_length = 0;
  int decoded_field_length = 0;
  raw_order_t local_top_order;
  int selected_field = -1;
  if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord;
  else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB;
  else local_top_order=ORDER_LSB;
  RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::BIT3_descr_.raw->forceomit);
  decoded_field_length = field_typeOfIdentity.RAW_decode(General__Types::BIT3_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  if (field_typeOfIdentity ==  bs_15) selected_field = 1;
  else if (field_typeOfIdentity ==  bs_16) selected_field = 0;
  else if (field_typeOfIdentity ==  bs_17) selected_field = 2;
  else selected_field = -1;
  RAW_Force_Omit field_1_force_omit(1, force_omit, MobileIdentityV__BSSGP_oddEvenInd__identity_descr_.raw->forceomit);
  decoded_field_length = field_oddEvenInd__identity.RAW_decode(MobileIdentityV__BSSGP_oddEvenInd__identity_descr_, p_buf, limit, local_top_order, no_err, selected_field, TRUE, &field_1_force_omit);
  if (decoded_field_length < 0) return decoded_field_length;
  decoded_length+=decoded_field_length;
  limit-=decoded_field_length;
  last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit());
  p_buf.set_pos_bit(last_decoded_pos);
  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
}

int MobileIdentityV__BSSGP::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const {
  if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
  int encoded_length = 0;
  myleaf.isleaf = FALSE;
  myleaf.body.node.num_of_nodes = 2;
  myleaf.body.node.nodes = init_nodes_of_enc_tree(2);
  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::BIT3_descr_.raw);
  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, MobileIdentityV__BSSGP_oddEvenInd__identity_descr_.raw);
  encoded_length += field_typeOfIdentity.RAW_encode(General__Types::BIT3_descr_, *myleaf.body.node.nodes[0]);
  encoded_length += field_oddEvenInd__identity.RAW_encode(MobileIdentityV__BSSGP_oddEvenInd__identity_descr_, *myleaf.body.node.nodes[1]);
  switch (field_oddEvenInd__identity.get_selection()) {
  case OddEvenInd__Identity__BSSGP::ALT_imei:
  if (field_typeOfIdentity !=  bs_15) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 0 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_15.RAW_encode(General__Types::BIT3_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case OddEvenInd__Identity__BSSGP::ALT_imsi:
  if (field_typeOfIdentity !=  bs_16) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 0 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_16.RAW_encode(General__Types::BIT3_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  case OddEvenInd__Identity__BSSGP::ALT_imei__sv:
  if (field_typeOfIdentity !=  bs_17) {
  RAW_enc_tr_pos pr_pos;
  pr_pos.level = myleaf.curr_pos.level + 1;
  int new_pos[] = { 0 };
  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
  if (temp_leaf != NULL)
     bs_17.RAW_encode(General__Types::BIT3_descr_,*temp_leaf);
  else
    TTCN_EncDec_ErrorContext::error
      (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value.");
  free_tree_pos(pr_pos.pos);
  }
  break;
  default:;
  }
  return myleaf.length = encoded_length;
}

struct MobileIdentityV__BSSGP_template::single_value_struct {
BITSTRING_template field_typeOfIdentity;
OddEvenInd__Identity__BSSGP_template field_oddEvenInd__identity;
};

void MobileIdentityV__BSSGP_template::set_specific()
{
if (template_selection != SPECIFIC_VALUE) {
template_sel old_selection = template_selection;
clean_up();
single_value = new single_value_struct;
set_selection(SPECIFIC_VALUE);
if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) {
single_value->field_typeOfIdentity = ANY_VALUE;
single_value->field_oddEvenInd__identity = ANY_VALUE;
}
}
}

void MobileIdentityV__BSSGP_template::copy_value(const MobileIdentityV__BSSGP& other_value)
{
single_value = new single_value_struct;
if (other_value.typeOfIdentity().is_bound()) {
  single_value->field_typeOfIdentity = other_value.typeOfIdentity();
} else {
  single_value->field_typeOfIdentity.clean_up();
}
if (other_value.oddEvenInd__identity().is_bound()) {
  single_value->field_oddEvenInd__identity = other_value.oddEvenInd__identity();
} else {
  single_value->field_oddEvenInd__identity.clean_up();
}
set_selection(SPECIFIC_VALUE);
}

void MobileIdentityV__BSSGP_template::copy_template(const MobileIdentityV__BSSGP_template& other_value)
{
switch (other_value.template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
if (UNINITIALIZED_TEMPLATE != other_value.typeOfIdentity().get_selection()) {
single_value->field_typeOfIdentity = other_value.typeOfIdentity();
} else {
single_value->field_typeOfIdentity.clean_up();
}
if (UNINITIALIZED_TEMPLATE != other_value.oddEvenInd__identity().get_selection()) {
single_value->field_oddEvenInd__identity = other_value.oddEvenInd__identity();
} else {
single_value->field_oddEvenInd__identity.clean_up();
}
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
value_list.n_values = other_value.value_list.n_values;
value_list.list_value = new MobileIdentityV__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]);
break;
case IMPLICATION_MATCH:
implication_.precondition = new MobileIdentityV__BSSGP_template(*other_value.implication_.precondition);
implication_.implied_template = new MobileIdentityV__BSSGP_template(*other_value.implication_.implied_template);
break;
case DYNAMIC_MATCH:
dyn_match = other_value.dyn_match;
dyn_match->ref_count++;
break;
default:
TTCN_error("Copying an uninitialized/unsupported template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
break;
}
set_selection(other_value);
}

MobileIdentityV__BSSGP_template::MobileIdentityV__BSSGP_template()
{
}

MobileIdentityV__BSSGP_template::MobileIdentityV__BSSGP_template(template_sel other_value)
 : Base_Template(other_value)
{
check_single_selection(other_value);
}

MobileIdentityV__BSSGP_template::MobileIdentityV__BSSGP_template(const MobileIdentityV__BSSGP& other_value)
{
copy_value(other_value);
}

MobileIdentityV__BSSGP_template::MobileIdentityV__BSSGP_template(const OPTIONAL<MobileIdentityV__BSSGP>& other_value)
{
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const MobileIdentityV__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Creating a template of type @BSSGP_Types.MobileIdentityV_BSSGP from an unbound optional field.");
}
}

MobileIdentityV__BSSGP_template::MobileIdentityV__BSSGP_template(MobileIdentityV__BSSGP_template* p_precondition, MobileIdentityV__BSSGP_template* p_implied_template)
 : Base_Template(IMPLICATION_MATCH)
{
implication_.precondition = p_precondition;
implication_.implied_template = p_implied_template;
}

MobileIdentityV__BSSGP_template::MobileIdentityV__BSSGP_template(Dynamic_Match_Interface<MobileIdentityV__BSSGP>* p_dyn_match)
 : Base_Template(DYNAMIC_MATCH)
{
dyn_match = new dynmatch_struct<MobileIdentityV__BSSGP>;
dyn_match->ptr = p_dyn_match;
dyn_match->ref_count = 1;
}

MobileIdentityV__BSSGP_template::MobileIdentityV__BSSGP_template(const MobileIdentityV__BSSGP_template& other_value)
: Base_Template()
{
copy_template(other_value);
}

MobileIdentityV__BSSGP_template::~MobileIdentityV__BSSGP_template()
{
clean_up();
}

MobileIdentityV__BSSGP_template& MobileIdentityV__BSSGP_template::operator=(template_sel other_value)
{
check_single_selection(other_value);
clean_up();
set_selection(other_value);
return *this;
}

MobileIdentityV__BSSGP_template& MobileIdentityV__BSSGP_template::operator=(const MobileIdentityV__BSSGP& other_value)
{
clean_up();
copy_value(other_value);
return *this;
}

MobileIdentityV__BSSGP_template& MobileIdentityV__BSSGP_template::operator=(const OPTIONAL<MobileIdentityV__BSSGP>& other_value)
{
clean_up();
switch (other_value.get_selection()) {
case OPTIONAL_PRESENT:
copy_value((const MobileIdentityV__BSSGP&)other_value);
break;
case OPTIONAL_OMIT:
set_selection(OMIT_VALUE);
break;
default:
TTCN_error("Assignment of an unbound optional field to a template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
}
return *this;
}

MobileIdentityV__BSSGP_template& MobileIdentityV__BSSGP_template::operator=(const MobileIdentityV__BSSGP_template& other_value)
{
if (&other_value != this) {
clean_up();
copy_template(other_value);
}
return *this;
}

boolean MobileIdentityV__BSSGP_template::match(const MobileIdentityV__BSSGP& other_value, boolean legacy) const
{
if (!other_value.is_bound()) return FALSE;
switch (template_selection) {
case ANY_VALUE:
case ANY_OR_OMIT:
return TRUE;
case OMIT_VALUE:
return FALSE;
case SPECIFIC_VALUE:
if(!other_value.typeOfIdentity().is_bound()) return FALSE;
if(!single_value->field_typeOfIdentity.match(other_value.typeOfIdentity(), legacy))return FALSE;
if(!other_value.oddEvenInd__identity().is_bound()) return FALSE;
if(!single_value->field_oddEvenInd__identity.match(other_value.oddEvenInd__identity(), legacy))return FALSE;
return TRUE;
case VALUE_LIST:
case COMPLEMENTED_LIST:
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST;
return template_selection == COMPLEMENTED_LIST;
case CONJUNCTION_MATCH:
for (unsigned int i = 0; i < value_list.n_values; i++) {
if (!value_list.list_value[i].match(other_value)) {
return FALSE;
}
}
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value);
case DYNAMIC_MATCH:
return dyn_match->ptr->match(other_value);
default:
TTCN_error("Matching an uninitialized/unsupported template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
}
return FALSE;
}

boolean MobileIdentityV__BSSGP_template::is_bound() const
{
if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
if (template_selection != SPECIFIC_VALUE) return TRUE;
return single_value->field_typeOfIdentity.is_bound()
 || single_value->field_oddEvenInd__identity.is_bound();
}

boolean MobileIdentityV__BSSGP_template::is_value() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
return single_value->field_typeOfIdentity.is_value()
 && single_value->field_oddEvenInd__identity.is_value();
}

void MobileIdentityV__BSSGP_template::clean_up()
{
switch (template_selection) {
case SPECIFIC_VALUE:
delete single_value;
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
case CONJUNCTION_MATCH:
delete [] value_list.list_value;
break;
case IMPLICATION_MATCH:
delete implication_.precondition;
delete implication_.implied_template;
break;
case DYNAMIC_MATCH:
dyn_match->ref_count--;
if (dyn_match->ref_count == 0) {
delete dyn_match->ptr;
delete dyn_match;
}
break;
default:
break;
}
template_selection = UNINITIALIZED_TEMPLATE;
}

MobileIdentityV__BSSGP MobileIdentityV__BSSGP_template::valueof() const
{
if (template_selection != SPECIFIC_VALUE || is_ifpresent)
TTCN_error("Performing a valueof or send operation on a non-specific template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
MobileIdentityV__BSSGP ret_val;
if (single_value->field_typeOfIdentity.is_bound()) {
ret_val.typeOfIdentity() = single_value->field_typeOfIdentity.valueof();
}
if (single_value->field_oddEvenInd__identity.is_bound()) {
ret_val.oddEvenInd__identity() = single_value->field_oddEvenInd__identity.valueof();
}
return ret_val;
}

void MobileIdentityV__BSSGP_template::set_type(template_sel template_type, unsigned int list_length)
{
if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH)
TTCN_error("Setting an invalid list for a template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
clean_up();
set_selection(template_type);
value_list.n_values = list_length;
value_list.list_value = new MobileIdentityV__BSSGP_template[list_length];
}

MobileIdentityV__BSSGP_template& MobileIdentityV__BSSGP_template::list_item(unsigned int list_index) const
{
if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH)
TTCN_error("Accessing a list element of a non-list template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
if (list_index >= value_list.n_values)
TTCN_error("Index overflow in a value list template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
return value_list.list_value[list_index];
}

BITSTRING_template& MobileIdentityV__BSSGP_template::typeOfIdentity()
{
set_specific();
return single_value->field_typeOfIdentity;
}

const BITSTRING_template& MobileIdentityV__BSSGP_template::typeOfIdentity() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field typeOfIdentity of a non-specific template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
return single_value->field_typeOfIdentity;
}

OddEvenInd__Identity__BSSGP_template& MobileIdentityV__BSSGP_template::oddEvenInd__identity()
{
set_specific();
return single_value->field_oddEvenInd__identity;
}

const OddEvenInd__Identity__BSSGP_template& MobileIdentityV__BSSGP_template::oddEvenInd__identity() const
{
if (template_selection != SPECIFIC_VALUE)
TTCN_error("Accessing field oddEvenInd_identity of a non-specific template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
return single_value->field_oddEvenInd__identity;
}

int MobileIdentityV__BSSGP_template::size_of() const
{
  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.MobileIdentityV_BSSGP which has an ifpresent attribute.");
  switch (template_selection)
  {
  case SPECIFIC_VALUE:
    return 2;
  case VALUE_LIST:
   {
     if (value_list.n_values<1)
       TTCN_error("Internal error: Performing sizeof() operation on a template of type @BSSGP_Types.MobileIdentityV_BSSGP containing an empty list.");
      int item_size = value_list.list_value[0].size_of();
      for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++)
      {
        if (value_list.list_value[l_idx].size_of()!=item_size)
          TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.MobileIdentityV_BSSGP containing a value list with different sizes.");
      }
      return item_size;
    }
  case OMIT_VALUE:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.MobileIdentityV_BSSGP containing omit value.");
  case ANY_VALUE:
  case ANY_OR_OMIT:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.MobileIdentityV_BSSGP containing */? value.");
  case COMPLEMENTED_LIST:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.MobileIdentityV_BSSGP containing complemented list.");
  case CONJUNCTION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.MobileIdentityV_BSSGP containing a conjunction list match.");
  case IMPLICATION_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.MobileIdentityV_BSSGP containing an implication match.");
  case DYNAMIC_MATCH:
    TTCN_error("Performing sizeof() operation on a template of type @BSSGP_Types.MobileIdentityV_BSSGP containing a dynamic match.");
  default:
    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
  }
  return 0;
}

void MobileIdentityV__BSSGP_template::log() const
{
switch (template_selection) {
case SPECIFIC_VALUE:
TTCN_Logger::log_event_str("{ typeOfIdentity := ");
single_value->field_typeOfIdentity.log();
TTCN_Logger::log_event_str(", oddEvenInd_identity := ");
single_value->field_oddEvenInd__identity.log();
TTCN_Logger::log_event_str(" }");
break;
case COMPLEMENTED_LIST:
TTCN_Logger::log_event_str("complement");
case CONJUNCTION_MATCH:
if (template_selection == CONJUNCTION_MATCH) {
TTCN_Logger::log_event_str("conjunct");
}
case VALUE_LIST:
TTCN_Logger::log_char('(');
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) {
if (list_count > 0) TTCN_Logger::log_event_str(", ");
value_list.list_value[list_count].log();
}
TTCN_Logger::log_char(')');
break;
case IMPLICATION_MATCH:
implication_.precondition->log();
TTCN_Logger::log_event_str(" implies ");
implication_.implied_template->log();
break;
case DYNAMIC_MATCH:
TTCN_Logger::log_event_str("@dynamic template");
break;
default:
log_generic();
}
log_ifpresent();
}

void MobileIdentityV__BSSGP_template::log_match(const MobileIdentityV__BSSGP& match_value, boolean legacy) const
{
if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
if(match(match_value, legacy)){
TTCN_Logger::print_logmatch_buffer();
TTCN_Logger::log_event_str(" matched");
} else{
if (template_selection == SPECIFIC_VALUE) {
size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
if(!single_value->field_typeOfIdentity.match(match_value.typeOfIdentity(), legacy)){
TTCN_Logger::log_logmatch_info(".typeOfIdentity");
single_value->field_typeOfIdentity.log_match(match_value.typeOfIdentity(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
if(!single_value->field_oddEvenInd__identity.match(match_value.oddEvenInd__identity(), legacy)){
TTCN_Logger::log_logmatch_info(".oddEvenInd_identity");
single_value->field_oddEvenInd__identity.log_match(match_value.oddEvenInd__identity(), legacy);
TTCN_Logger::set_logmatch_buffer_len(previous_size);
}
}else {
TTCN_Logger::print_logmatch_buffer();
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
TTCN_Logger::log_event_str(" unmatched");
}
}
return;
}
if (template_selection == SPECIFIC_VALUE) {
TTCN_Logger::log_event_str("{ typeOfIdentity := ");
single_value->field_typeOfIdentity.log_match(match_value.typeOfIdentity(), legacy);
TTCN_Logger::log_event_str(", oddEvenInd_identity := ");
single_value->field_oddEvenInd__identity.log_match(match_value.oddEvenInd__identity(), legacy);
TTCN_Logger::log_event_str(" }");
} else {
match_value.log();
TTCN_Logger::log_event_str(" with ");
log();
if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched");
else TTCN_Logger::log_event_str(" unmatched");
}
}

void MobileIdentityV__BSSGP_template::set_implicit_omit()
{
if (template_selection != SPECIFIC_VALUE) return;
if (typeOfIdentity().is_bound()) typeOfIdentity().set_implicit_omit();
if (oddEvenInd__identity().is_bound()) oddEvenInd__identity().set_implicit_omit();
}

void MobileIdentityV__BSSGP_template::encode_text(Text_Buf& text_buf) const
{
encode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value->field_typeOfIdentity.encode_text(text_buf);
single_value->field_oddEvenInd__identity.encode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
text_buf.push_int(value_list.n_values);
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].encode_text(text_buf);
break;
default:
TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
}
}

void MobileIdentityV__BSSGP_template::decode_text(Text_Buf& text_buf)
{
clean_up();
decode_text_base(text_buf);
switch (template_selection) {
case SPECIFIC_VALUE:
single_value = new single_value_struct;
single_value->field_typeOfIdentity.decode_text(text_buf);
single_value->field_oddEvenInd__identity.decode_text(text_buf);
case OMIT_VALUE:
case ANY_VALUE:
case ANY_OR_OMIT:
break;
case VALUE_LIST:
case COMPLEMENTED_LIST:
value_list.n_values = text_buf.pull_int().get_val();
value_list.list_value = new MobileIdentityV__BSSGP_template[value_list.n_values];
for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++)
value_list.list_value[list_count].decode_text(text_buf);
break;
default:
TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @BSSGP_Types.MobileIdentityV_BSSGP.");
}
}

void MobileIdentityV__BSSGP_template::set_param(Module_Param& param)
{
  param.basic_check(Module_Param::BC_TEMPLATE, "record template");
  switch (param.get_type()) {
  case Module_Param::MP_Omit:
    *this = OMIT_VALUE;
    break;
  case Module_Param::MP_Any:
    *this = ANY_VALUE;
    break;
  case Module_Param::MP_AnyOrNone:
    *this = ANY_OR_OMIT;
    break;
  case Module_Param::MP_List_Template:
  case Module_Param::MP_ComplementList_Template:
  case Module_Param::MP_ConjunctList_Template: {
    MobileIdentityV__BSSGP_template new_temp;
    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size());
    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
      new_temp.list_item(p_i).set_param(*param.get_elem(p_i));
    }
    *this = new_temp;
    break; }
  case Module_Param::MP_Value_List:
    if (2<param.get_size()) {
      param.error("record template of type @BSSGP_Types.MobileIdentityV_BSSGP has 2 fields but list value has %d fields", (int)param.get_size());
    }
    if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) typeOfIdentity().set_param(*param.get_elem(0));
    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) oddEvenInd__identity().set_param(*param.get_elem(1));
    break;
  case Module_Param::MP_Assignment_List: {
    Vector<bool> value_used(param.get_size());
    value_used.resize(param.get_size(), FALSE);
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "typeOfIdentity")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          typeOfIdentity().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      if (!strcmp(curr_param->get_id()->get_name(), "oddEvenInd_identity")) {
        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
          oddEvenInd__identity().set_param(*curr_param);
        }
        value_used[val_idx]=TRUE;
      }
    }
    for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) {
      Module_Param* const curr_param = param.get_elem(val_idx);
      curr_param->error("Non existent field name in type @BSSGP_Types.MobileIdentityV_BSSGP: %s", curr_param->get_id()->get_name());
      break;
    }
  } break;
  case Module_Param::MP_Implication_Template: {
    MobileIdentityV__BSSGP_template* precondition = new MobileIdentityV__BSSGP_template;
    precondition->set_param(*param.get_elem(0));
    MobileIdentityV__BSSGP_template* implied_template = new MobileIdentityV__BSSGP_template;
    implied_template->set_param(*param.get_elem(1));
    *this = MobileIdentityV__BSSGP_template(precondition, implied_template);
  } break;
  default:
    param.type_error("record template", "@BSSGP_Types.MobileIdentityV_BSSGP");
  }
  is_ifpresent = param.get_ifpresent();
}

void MobileIdentityV__BSSGP_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return;
switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) {
case TR_OMIT:
if (template_selection==OMIT_VALUE) return;
case TR_VALUE:
if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break;
single_value->field_typeOfIdentity.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.MobileIdentityV_BSSGP");
single_value->field_oddEvenInd__identity.check_restriction(t_res, t_name ? t_name : "@BSSGP_Types.MobileIdentityV_BSSGP");
return;
case TR_PRESENT:
if (!match_omit(legacy)) return;
break;
default:
return;
}
TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@BSSGP_Types.MobileIdentityV_BSSGP");
}

boolean MobileIdentityV__BSSGP_template::is_present(boolean legacy) const
{
if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
return !match_omit(legacy);
}

boolean MobileIdentityV__BSSGP_template::match_omit(boolean legacy) const
{
if (is_ifpresent) return TRUE;
switch (template_selection) {
case OMIT_VALUE:
case ANY_OR_OMIT:
return TRUE;
case IMPLICATION_MATCH:
return !implication_.precondition->match_omit() || implication_.implied_template->match_omit();
case VALUE_LIST:
case COMPLEMENTED_LIST:
if (legacy) {
for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++)
if (value_list.list_value[l_idx].match_omit())
return template_selection==VALUE_LIST;
return template_selection==COMPLEMENTED_LIST;
} // else fall through
default:
return FALSE;
}
return FALSE;
}


} /* end of namespace */
